連載
» 2016年02月12日 05時00分 公開

Access VBAで学ぶ初心者のためのデータベース/SQL超入門(8):Accessのコントロールに値集合タイプ/ソース、SQLでデータを表示する基本 (3/4)

[薬師寺国安,PROJECT KySS]

「コンボボックス」に性別を表示し、選択された性別に該当するレコードをリストボックスに表示する

 続いて、選択した性別に該当するレコードをリストボックスに表示するための「コンボボックス」を配置しよう。

 ここでは、フォーム上に「コンボボックス」と「リストボックス」を一つずつ作成する(図5)。

photo 図5 性別コンボボックスと結果リストボックスを配置した

 コンボボックスのラベルは、「性別」とする。プロパティシートより、書式は、フォント名に「Meiryo UI」、フォントサイズに「14」、フォント太さに「太字」とする。続いて、「その他」タブから、コンボボックスの名前欄は「性別コンボボックス」と指定しておく。

結果リストボックスの列幅
リストボックス
ID 0.979cm
氏名 2.542cm
性別 1.27cm
年齢 1.00cm
郵便番号 2.50cm
住所 5.50cm
電話番号 2.542cm

 リストボックスは、リストボックスのプロパティシートより、列数を「7」とし、列幅欄には、右記表1の値をセミコロン(;)で区切って1行で入力する。列数に「7」を指定するのは、フィールドが7個あるからだ。

 リストボックスの書式は、列見出しに「はい」、フォント名に「Meiryo UI」、フォントサイズは「12」とする。「その他」タブの名前欄は「結果リストボックス」と指定しておく。

 性別コンボボックスには、「値集合ソース」と「値集合タイプ」も指定する。性別コンボボックスを選び、上部の「データ」タブから、値集合ソースを「男;女」、値集合タイプを「値リスト」と指定する(図6)。性別の選択肢は原則として「男」か「女」のどちらかなので、いずれかをドロップダウンメニューで選べるようにすればよい(図7)。

photo 図6 性別コンボボックスの「値集合ソース」と「値集合タイプ」を指定する
photo 図7 コンボボックスは「男」か「女」のみを選択できるようにした

選択した性別のレコードを「結果リストボックス」へ表示する処理を行う

 次に、コンボボックスから性別を選んだときに処理するコードを記述する。

 「性別コンボボックス」フォームを選択し、「プロパティシート」→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックするとVBEが開き、

Private Sub 性別コンボボックス_Click()

End Sub


のコードが生成される。この中にリスト3のコードを記述する。

Private Sub 性別コンボボックス_Click()
  Dim myRecordSet As Recordset
  Dim sexSQL As String
  sexSQL = "Select * From 顧客管理テーブル Where 性別=" & "'" & 性別コンボボックス.Value & "';"
     Set myRecordSet = CurrentDb.OpenRecordset(sexSQL)
      結果リストボックス.RowSourceType = "Table/Query"
      結果リストボックス.RowSource = sexSQL
      myRecordSet.Close
      Set myRecordSet = Nothing
End Sub
リスト3 選択した性別のレコードを「結果リストボックス」に表示する処理のためのコード

 リスト3のコードは、以下のように記述されている。

  • 2行目:RecordSet型の変数myRecordSetを宣言する
  • 3行目:文字列型のsexSQLを宣言する
  • 4行目:sexSQLに、「性別コンボボックス」から選択された、「性別」に該当する全レコードを取得するSQL文を指定する
  • 5行目:CurrentDB.OpenRecordsetメソッドで、sexSQLに指定したクエリを開き、読み込む準備を行う
  • 6行目:結果リストボックスの「値集合タイプ」に「Table/Query」を指定する
  • 7行目:結果リストボックスの「値集合ソース」に、「性別コンボボックス」で選択した性別に合致するレコードを抽出するクエリを指定する。これで、性別に応じた全レコードが抽出される
  • 8〜9行目:レコードセットを閉じ、全ての関連付けから解放する

次回起動時に「性別コンボボックスを空」にする処理

 次回起動時は性別コンボボックスの内容が空(から)になるよう、以下の処理も追加しておこう。

 性別リストボックスを選択してForm_Loadイベントプロシージャを作成し、この中にリスト4のコードを記述する。

Private Sub Form_Load()
  氏名リストボックス.RowSourceType = "Table/Query"
  氏名リストボックス.RowSource = "Select 氏名 From 顧客管理テーブル;"
  性別コンボボックス = ""
End Sub
リスト4 起動時に「性別リストボックス」を空にする処理

男女別のリスト表示機能が完成

 実行すると、図8のように表示される。

photo 図8 「男/女」別のレコードがリストボックスに表示された

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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