データベース作成

Access VBA データベース作成7 リストボックスの値取得 検索フォームの作成3

データベース作成7 検索フォームの作成3

実践データベース作成の第7回目は検索フォームの作成Part3です。
前回は検索結果をリストボックスに表示するプログラムを完成させました。
今回は検索結果のリストボックスをクリックし詳細データを各テキストボックスに表示させます。
・リストボックスに表示された社員データをクリック
・各テキストボックスに社員データの詳細を表示
上位のような流れになります。

では実際にVBAを組み込んでいきます。

リストボックス(検索結果リスト)のクリック時イベント

リストボックスのイベントは「クリック時」になります。

sakusei20

sakusei21
リストボックスの「クリック時」では以下のプログラムを実行します。
1.リストボックスの値(社員コード)を検索条件としたSQLを実行
2.検索されたデータを各テキストボックスへ表示
実際のプログラムは以下のようになります。

プログラム例

Private Sub 検索結果リスト_Click()

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim SQL As String

Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset

SQL = “SELECT ”
SQL = SQL & “T_社員マスタ2013.社員コード, ”
SQL = SQL & “T_社員マスタ2013.名前, ”
SQL = SQL & “T_社員マスタ2013.性別コード, ”
SQL = SQL & “T_性別マスタ.性別, ”
SQL = SQL & “T_社員マスタ2013.所属部署コード, ”
SQL = SQL & “T_所属部署マスタ.所属部署名, ”
SQL = SQL & “T_社員マスタ2013.入社年月日 ”
SQL = SQL & “FROM ”
SQL = SQL & “(T_社員マスタ2013 ”
SQL = SQL & “INNER JOIN T_性別マスタ ”
SQL = SQL & “ON T_社員マスタ2013.性別コード = T_性別マスタ.性別コード) ”
SQL = SQL & “INNER JOIN T_所属部署マスタ ”
SQL = SQL & “ON T_社員マスタ2013.所属部署コード = T_所属部署マスタ.所属部署コード ”
SQL = SQL & “WHERE ”
SQL = SQL & “(((T_社員マスタ2013.社員コード)='” & Me.検索結果リスト.Column(0) & “‘));”

RS.Open SQL, CN, adOpenStatic, adLockOptimistic

If RS.EOF = False Then

Me.詳細社員コード = RS!社員コード
Me.詳細名前 = RS!名前
Me.詳細性別 = RS!性別
Me.詳細所属部署 = RS!所属部署名
Me.詳細入社日 = RS!入社年月日

End If

RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing

End Sub

プログラムの説明

SQL文のWHERE句

SQL文中の「WHERE」句がポイントになります。

SQL = SQL & “WHERE “
SQL = SQL & “(((T_社員マスタ2013.社員コード)='” & Me.検索結果リスト.Column(0) & “‘));”

【'” & Me.検索結果リスト.Column(0) & “‘】は「リストボックスの1番目の列のデータ」という意味です。2列目でしたら「検索結果リスト.Column(1)」になります。

検索結果を各テキストボックスへ表示

検索結果がゼロでなければテキストボックスへ表示します。

sakusei20
リストボックスをクリック後、各データがテキストボックスへ表示されれば成功です。

いかがでしょうか?
今回のポイントもSQLの書き方です。
・WHERE句内の条件式の書き方
・リストボックスの値を得るには「Column」を使用する

今回で検索フォーム作成は終了になります。
今のところ、クエリ・マクロをひとつも作らずにプログラミングだけで作成出来ていますね。
次回はデータ編集のフォーム作成になります。

You Tubeにて動画を公開しています。

こちらの記事もおすすめ!