連載
» 2016年01月22日 05時00分 公開

Access VBAで学ぶ初心者のためのデータベース/SQL超入門(6):「SQL」文で登録されているデータをAccessを通じて編集し、変更をデータベースに反映させる方法 (2/3)

[薬師寺国安,PROJECT KySS]

一覧リストボックスから選択した項目を「テキストボックス」や「コンボボックス」に表示する

 続いて、一覧より選択した項目を「テキストボックス」や「コンボボックス」に表示するための処理を行っていく。

フォームが読み込まれたときの初期化処理

 その前に、以下の変数宣言を「プライベートモジュールレベル」変数として宣言しておく。前回と同様に、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()
String型の変数、namae、sex、age、yuubin、address、tel、SQLを宣言するための文字列

 次に、フォームが読み込まれたときの処理として、リスト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 フォームが読み込まれたときの処理

 リスト1のコードの内容は以下の通り。

  • 2〜3行目:変数「i」を宣言し、ItemSelected.Countプロパティで、一覧リストボックスの項目が「0」より大きい場合、つまり項目が選択された状態のときは、以下の処理を行う。
  • 4〜6行目:一覧リストボックス内の項目の個数の分だけ反復処理を行い、Selected(Index)の値にFalseを指定して、選択を解除する。
  • 8〜13行目:その後、各「テキストボックス」の中を空にしておく。

 この処理により、「データ編集フォーム」を起動したときは「一覧リストボックス」内の項目が何も選択されていない状態となる。

ワンポイント

 Form_Loadイベントは、図4、図5の方法でコードを生成することもできる。また、第5回「AccessでSQLのLIKE演算子を使って「あいまい検索処理」の機能を実装する方法」で解説した方法もある

photo 図4 まず、Formを選択する
photo 図5 次にLoadを選択する

 これで、

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はプロパティを使って、各列と各行の値を取得して変数に格納していくコードだ。

  • 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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。