顧客管理フォームに、「条件に合致するレコードを検索する機能」を設置する:Access VBAで学ぶ初心者のためのデータベース/SQL超入門(11)(2/4 ページ)
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、「レコードの移動」「複数の条件に合致するレコードを検索する」といったレコード処理の応用テクニックを解説する。
「顧客管理テーブル」内のレコードから、「性別」でフィルタリングして検索する
フォーム上の空いている場所に、性別で検索するための「コンボボックス」を1つ配置する(図5)。コンボボックスの書式は、プロパティシートの「データ」タブにある「値集合ソース」へ「男;女」と指定し、値集合タイプは「値リスト」と指定しておく。ボックス名は「検索性別コンボボックス」と指定しておく。ラベル名は「性別でテーブルを検索」として、ラベルの書式は今までに設定した標準書式でよい。
コントロールの種類 | 名前 |
---|---|
コンボボックス | 検索性別コンボボックス |
検索性別コンボボックスの値が選択された時の処理
続いて、検索性別コンボボックスのためのコードを記述していく。
「検索性別コンボボックス」を選択した状態で、プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックするとVBEが開き、
Private Sub 検索性別コンボボックス_Change()
End Sub
のコードが生成される。これをリスト1のコードに書き換える。
Private Sub 検索性別コンボボックス_Change() DoCmd.OpenTable tableName:="顧客管理テーブル", DataMode:=acReadOnly DoCmd.GoToControl ControlName:="性別" DoCmd.FindRecord FindWhat:=検索性別コンボボックス.ItemData(検索性別コンボボックス.ListIndex) Do Dim 確認 As Integer 確認 = MsgBox("次を検索しますか?", vbOKCancel) Select Case 確認 Case 1 DoCmd.FindNext Case 2 Exit Do End Select Loop End Sub
リスト1のコードは、以下のように記述してある。
DoCmd.OpenTableで、検索対象のテーブル(顧客管理テーブル)を読み取り専用モードで開く。書式は下記の通りだ。
- DoCmd.OpenTable(tableName:=カレントデータベースのテーブル名(必須),DataMode:=テーブルを開くときの入力モード
名前 | 説明 |
---|---|
acAdd | 新しいレコードを追加できるが、既存レコードの参照/編集はできない |
acEdit | 既存のレコードを参照/編集と、新しいレコードの追加ができる(既定値) |
acReadOnly | 読み取り専用 |
(出典:Office Dev Center「AcOpenDataMode 列挙 (Access)」) |
次に、DoCmd.GotoControlで検索対象のフィールド名を「性別」に指定する。書式は下記の通りだ。
- DoCmd.GotoControl ControlName:=検索対象フィールド名
DoCmd.FindRecordで、「検索性別コンボボックス」から選択された性別に合致するレコードを検索する。書式は下記の通りだ。
- DoCmd.FindRecord(FindWhat:=検索対象となるデータ(必須))
今回は全て「名前付き引数」で指定している。この他の引数については、下記のURLを参照してほしい。
(参考リンク)Office Dev Center「DoCmd.FindRecord メソッド (Access)」
続いて、Do〜Loopステートメント内で以下の処理を繰り返すよう記述する。
Integer型の変数「確認」を宣言し、Msgboxで「次を検索しますか?」と表示させる。「OK」を選択、つまり、戻り値が「1」ならば、DoCmd.FindNextで、FindRecordメソッドと同じ条件で次のレコードを検索する。「Cancel」を選択、つまり、戻り値が「2」の場合は処理を抜ける。Msgboxの戻り値については下記のURLが参照になる。
(参考リンク)「MsgBox関数の使い方 - アクセス・Access2013」
実行すると、図6のようになる。
次は、「複数の条件に合致するレコード」を検索する機能を追加しよう。
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がサポートする正規表現クラスを徹底活用する(後編)