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

» 2016年02月12日 05時00分 公開
[薬師寺国安PROJECT KySS]
前のページへ 1|2|3|4       

「タブコントロール」で「男/女」のレコードを切り替えて表示する

 最後に、「タブコントロール」も配置しよう。「男/女」別のレコードをタブ別に表示させる機能だ。

 まず、フォームへ「タブコントロール」を配置する(図9)。これまでと同様に、プロパティシートの「その他」タブから、配置するタブコントロールの名前を「性別タブコントロール」と決めておく。

photo 図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 タブによって「男」と「女」のデータを切り替えて表示する処理

 リスト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のように表示される。これで、タブを選択すると「男性」と「女性」それぞれのデータに切り替わる機能が追加できた。

photo 図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)


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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