「SQL」文で登録されているデータをAccessを通じて編集し、変更をデータベースに反映させる方法:Access VBAで学ぶ初心者のためのデータベース/SQL超入門(6)(2/3 ページ)
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、「SQL」文で登録されているデータの編集処理を可能にし、変更をデータベースに反映させる方法を解説する。
一覧リストボックスから選択した項目を「テキストボックス」や「コンボボックス」に表示する
続いて、一覧より選択した項目を「テキストボックス」や「コンボボックス」に表示するための処理を行っていく。
フォームが読み込まれたときの初期化処理
その前に、以下の変数宣言を「プライベートモジュールレベル」変数として宣言しておく。前回と同様に、VBE(Visual Basic Editor)のコードエディタでイベントプロシージャを作成し、以下の文字列を「Option Explicit」の下にそのまま記載してほしい。
Private namae As String Private sex As String Private age As String Private yuubin As String Private address As String Private tel As String Private SQL As String Private Sub Form_Load()
次に、フォームが読み込まれたときの処理として、リスト1のコードを記述する。主な目的は初期化だ。
Private Sub Form_Load() Dim i As Integer If 一覧リストボックス.ItemsSelected.Count > 0 Then For i = 0 To 一覧リストボックス.ListCount 一覧リストボックス.Selected(i) = False Next End If 氏名テキストボックス.Value = "" 性別コンボボックス.Value = "" 年齢テキストボックス.Value = "" 郵便番号テキスト.Value = "" 住所テキストボックス.Value = "" 電話テキストボックス.Value = "" End Sub
リスト1のコードの内容は以下の通り。
- 2〜3行目:変数「i」を宣言し、ItemSelected.Countプロパティで、一覧リストボックスの項目が「0」より大きい場合、つまり項目が選択された状態のときは、以下の処理を行う。
- 4〜6行目:一覧リストボックス内の項目の個数の分だけ反復処理を行い、Selected(Index)の値にFalseを指定して、選択を解除する。
- 8〜13行目:その後、各「テキストボックス」の中を空にしておく。
この処理により、「データ編集フォーム」を起動したときは「一覧リストボックス」内の項目が何も選択されていない状態となる。
ワンポイント
Form_Loadイベントは、図4、図5の方法でコードを生成することもできる。また、第5回「AccessでSQLのLIKE演算子を使って「あいまい検索処理」の機能を実装する方法」で解説した方法もある
これで、
Private Sub Form_Load() End Sub
のコードが生成されるので、この中に処理を記述していく。これ以降の「一覧リストボックス_Click」や「編集ボタン_Click」についても、同様の手順でコードを生成するといい。
一覧リストボックスを選択したときの処理
「一覧リストボックス」を選択し、「プロパティシート」→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックすると、
Private Sub 一覧リストボックス_Click() End Sub
のコードが生成されるので、この中にリスト2のコードを記述する。
Private Sub 一覧リストボックス_Click() namae = 一覧リストボックス.Column(1, 一覧リストボックス.ListIndex + 1) sex = 一覧リストボックス.Column(2, 一覧リストボックス.ListIndex + 1) age = 一覧リストボックス.Column(3, 一覧リストボックス.ListIndex + 1) yuubin = 一覧リストボックス.Column(4, 一覧リストボックス.ListIndex + 1) address = 一覧リストボックス.Column(5, 一覧リストボックス.ListIndex + 1) tel = 一覧リストボックス.Column(6, 一覧リストボックス.ListIndex + 1) 氏名テキストボックス.Value = namae 性別コンボボックス.Value = sex 年齢テキストボックス.Value = age 郵便番号テキストボックス.Value = yuubin 住所テキストボックス.Value = address 電話テキストボックス.Value = tel End Sub
リスト2はプロパティを使って、各列と各行の値を取得して変数に格納していくコードだ。
- 2行目:namae変数には、1列目(氏名)で、行が「一覧リストボックス.ListIndex+1」の行の値を取得して格納する。「+1」としたのは、ListIndexだけでは、インデックスの値が「0」になり、項目行のタイトルを取得してしまうため。「+1」行ずらして、項目行の値を取得するようにしている。
- 3〜7行目:sexには2列目(性別)の値、ageには3列目(年齢)の値、yuubinには4列目(郵便番号)の値、addressには5列目(住所)の値、telには6列目(電話番号)の値を格納している。
こうして取得した値を、各「テキストボックス」の値に指定する。これで、「一覧リストボックス」から選択した値が、各「テキストボックス」に表示されるようになる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう - Access VBAでデータ入力フォームを作り、各コントロールを追加するためのデザインビューの使い方
今回は、テーブルを基にデータ入力フォームを作成し、ラベル、テキストボックス、コンボボックス、ボタンリストボックスを追加する手順を解説する - SQLとはどういう言語か
- Accessを使うなら最低限知っておきたいSQL文を使ったさまざまな種類のクエリ操作の基本
今回は、テーブルに「SELECT文」や「BETWEEN演算子」などのSQLを入力し、データベースに蓄積したレコードを抽出する方法を解説する - 初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法
- Accessでフォームからデータを追加し、Excelのシートにエクスポートする
- SQLとはどういう言語か
- 数値判定、乱数発生、数値の丸めなど、数値に関する4つの関数の使い方
- 制御文で道案内
- 使うほどに良さが分かる正規表現
- .NET Frameworkがサポートする正規表現クラスを徹底活用する(前編)
- .NET Frameworkがサポートする正規表現クラスを徹底活用する(後編)