Accessのコントロールに値集合タイプ/ソース、SQLでデータを表示する基本:Access VBAで学ぶ初心者のためのデータベース/SQL超入門(8)(4/4 ページ)
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、業務アプリ作成のためのAccess基本フォームの基礎と共に、値集合タイプ/ソース、SQLで各コントロールにデータを表示する方法を解説する。
「タブコントロール」で「男/女」のレコードを切り替えて表示する
最後に、「タブコントロール」も配置しよう。「男/女」別のレコードをタブ別に表示させる機能だ。
まず、フォームへ「タブコントロール」を配置する(図9)。これまでと同様に、プロパティシートの「その他」タブから、配置するタブコントロールの名前を「性別タブコントロール」と決めておく。
表れる二つのタブのうち、まず一つ目のタブから作業しよう。プロパティシートの「その他」タブ→名前欄へ、タブの表示名となる「男性」を入れる。この「男性」タブを選択した状態で「リストボックス」を配置する。リストボックスのプロパティには、列数に「7」、列幅は、前述した表1の値を同様にセミコロン(;)で区切って入力する。書式は、フォント名に「Meiryo UI」、フォントサイズは「12」に、「その他」タブにある名前欄は「男性結果リストボックス」と指定する。
続いて、二つ目のタブ名は「女性」とし、男性タブと同様にリストボックスを配置して、書式などを設定する。リストボックスの名前は「女性結果リストボックス」と指定する。
今回は使わないが、タブの追加も可能だ。タブコントロールの上で右クリックメニューを開くと表れる、「ページの挿入」で新しいタブを追加できる。削除も「ページの削除」で行える。
性別タブ選択時に「結果リストボックス」へ表示する処理を行う
作成した「性別タブ」を選ぶと結果が表示される、「結果リストボックス」のためのコードを記述していく。
「性別タブコントロール」を選択し、「プロパティシート」→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックするとVBEが開き、
Private Sub性別タブコントロール_Click()
End Sub
のコードが生成される。この中にリスト5のコードを記述する。
Private Sub 性別タブコントロール_Click() Dim myRecordSet As Recordset Dim selectPage As Integer Dim SQL As String selectPage = 性別タブコントロール.Value Select Case selectPage Case 0 SQL = "Select * From 顧客管理テーブル Where 性別='男';" Set myRecordSet = CurrentDb.OpenRecordset(SQL) 男性結果リストボックス.RowSourceType = "Table/Query" 男性結果リストボックス.RowSource = SQL Case 1 SQL = "Select * From 顧客管理テーブル Where 性別='女';" Set myRecordSet = CurrentDb.OpenRecordset(SQL) 女性結果リストボックス.RowSourceType = "Table/Query" 女性結果リストボックス.RowSource = SQL End Select myRecordSet.Close Set myRecordSet = Nothing End Sub
リスト5のコードは、以下のように記述されている。
- 2行目:RecordSet型の変数myRecordSetを宣言する
- 3行目:Integer型の変数selectPageを宣言する
- 4行目:文字列型の変数SQLを宣言する
- 5行目:変数selectPageに「性別タブコントロール」の選択ページの番号を代入する。番号は「0」から始まる
- 6行目:選択ページを格納しているselectPage変数の値で条件分岐を行う
- 7〜11行目:選択ページが「0」、つまり「男性タブ」がクリックされたときの処理
- 8行目:変数SQLに「性別」が「男」の全レコードを取得するクエリを代入する
- 9行目:CurrentDB.OpenRecordsetメソッドで、SQLに指定したクエリを開き、読み込む準備を行う
- 10行目:「男性結果リストボックス」の値集合タイプに「Table/Query」を指定する
- 11行目:「男性結果リストボックス」の値集合ソースに、性別=「男」に合致するレコードを抽出するクエリを指定する。これで、男性の全レコードが抽出され、「男性結果リストボックス」に表示される
- 12〜16行目:選択ページが「1」、つまり「女性タブ」がクリックされたときの処理
- 18〜19行目:レコードセットを閉じ、全ての関連付けから解放する
性別タブ選択時のリスト表示機能が完成
実行すると、図10のように表示される。これで、タブを選択すると「男性」と「女性」それぞれのデータに切り替わる機能が追加できた。
次回予告
ここまで、Accessのフォームでよく使われる、「テキストボックス」「リストボックス」「コンボボックス」「タブコントロール」の使い方を実践形式で解説してきた。フォームで使用可能なコントロールはこの他にもあるが、まずこの四つをマスターしておけば応用の範囲が広がるはずだ。
次回は、「AccessのテーブルへCSVデータを表示させる」「AccessのレコードをCSV形式で書き出してExcelで表示させる」といった、Microsoft Officeや他ソフトウェアとの連携に役立つ「ファイル入出力」のノウハウを紹介する。お楽しみに。
筆者紹介
薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所
薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。
1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。
2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。
Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)
Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)
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がサポートする正規表現クラスを徹底活用する(後編)