Accessのコントロールに値集合タイプ/ソース、SQLでデータを表示する基本:Access VBAで学ぶ初心者のためのデータベース/SQL超入門(8)(3/4 ページ)
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、業務アプリ作成のためのAccess基本フォームの基礎と共に、値集合タイプ/ソース、SQLで各コントロールにデータを表示する方法を解説する。
「コンボボックス」に性別を表示し、選択された性別に該当するレコードをリストボックスに表示する
続いて、選択した性別に該当するレコードをリストボックスに表示するための「コンボボックス」を配置しよう。
ここでは、フォーム上に「コンボボックス」と「リストボックス」を一つずつ作成する(図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)。
選択した性別のレコードを「結果リストボックス」へ表示する処理を行う
次に、コンボボックスから性別を選んだときに処理するコードを記述する。
「性別コンボボックス」フォームを選択し、「プロパティシート」→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックすると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のコードは、以下のように記述されている。
- 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
男女別のリスト表示機能が完成
実行すると、図8のように表示される。
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がサポートする正規表現クラスを徹底活用する(後編)