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

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

[薬師寺国安,PROJECT KySS]

「テキストボックス」へ、リストボックスで選択した氏名に該当する、「郵便番号」と「住所」を表示する

 次は、「テキストボックス」へ、先ほど配置したリストボックス(氏名リストボックス)より選択した「氏名」に該当する「郵便番号」と「住所」を表示する方法を実践していこう。

 氏名リストボックスの下に「テキストボックス」コントロールを二つ配置して、項目名となるラベルは、それぞれ「〒」「住所」とする。書式は、プロパティシートより、フォント名に「Meiryo UI」、フォントサイズに「14」、フォント太さに「太字」とする。続いて「その他」タブから、項目名「〒」のテキストボックスの名前欄に「郵便番号テキストボックス」を、同じく「住所」の名前欄には「住所テキストボックス」と指定しておく。

photo 図3 氏名リストボックスの下に、「〒」と「住所」のテキストボックスを配置した

 VBEを起動して、VBAコードを記述する。Accessメニューの「作成」タブをクリックし、右端に表示されている「Visual Basic」を選択する。氏名リストボックスのイベントプロシージャを指定すると、先ほど後回しにしておいた、

Private Sub 氏名リストボックス_Click()

End Sub


のプロシージャが残っているので、リスト2のようにコードを書き換える。

Private Sub Form_Load()
  氏名リストボックス.RowSourceType = "Table/Query"
  氏名リストボックス.RowSource = "Select 氏名 From 顧客管理テーブル;"
End Sub
Private Sub 氏名リストボックス_Click()
  Dim myRecordSet As Recordset
  Dim yuubinSQL As String
  Dim addressSQL As String
  
  yuubinSQL = "Select 郵便番号 From 顧客管理テーブル Where 氏名=" & "'" & 氏名リストボックス.ItemData(氏名リストボックス.ListIndex) & "';"
  addressSQL = "Select 住所 From 顧客管理テーブル Where 氏名=" & "'" & 氏名リストボックス.ItemData(氏名リストボックス.ListIndex) & "';"
  Set myRecordSet = CurrentDb.OpenRecordset(yuubinSQL)
  郵便番号テキストボックス = myRecordSet("郵便番号")
  
  myRecordSet.Close
  Set myRecordSet = Nothing
  
  Set myRecordSet = CurrentDb.OpenRecordset(addressSQL)
  住所テキストボックス = myRecordSet("住所")
  
    myRecordSet.Close
  Set myRecordSet = Nothing
End Sub
リスト2: 氏名リストボックスより選択した「氏名」に合致する「郵便番号」と「住所」を表示するコード

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

  • 6行目:RecordSet型の変数myRecordSetを宣言する
  • 7行目:文字列型のyuubinSQLaddressSQLを宣言する
  • 10行目:yuubinSQLに「氏名リストボックス」で選択された「氏名」に該当する「郵便番号」フィールドを取得するための「SQL文」を指定する
  • 12行目:CurrentDB.OpenRecordsetメソッドで、yuubinSQLに指定したクエリを開き、読み込む準備を行う
  • 13行目:「郵便番号テキストボックス」へ、SQL文のクエリに該当する「郵便番号」フィールドの値を指定する
  • 15〜16行目:レコードセットを閉じ、全ての関連付けから解放する
  • 11行目:addressSQLに「氏名リストボックス」で選択された「氏名」に該当する「住所」フィールドを取得するための「SQL文」を指定する
  • 18行目:CurrentDB.OpenRecordsetメソッドで、addressSQLに指定したクエリを開き、読み込む準備を行う
  • 19行目:「住所テキストボックス」へ、SQL文のクエリに該当する「住所」フィールドの値を指定する
  • 21〜22行目:再度、レコードセットを閉じ、全ての関連付けから解放する

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

photo 図4 「氏名リストボックス」から選択した「氏名」に該当する「郵便番号」と「住所」が表示された

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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