検索フォームの作り方|あいあまい検索・次へボタン:Microsoft Access

Accessフォーム メニューへ

前回抽出フォームを作成しましたが、今回はあいまい検索し見つかったレコードに次々と移動するVBAを作成します。

ここで作成したサンプル データベース ファイルは無料でダウンロードできます。

スポンサーリンク


検索フォームの元になる、都道府県の人口一覧のフォームです。
検索フォームの元になる、都道府県の人口一覧のフォーム

フォームのレコードソースにはデータの元になる「T-人口」テーブルを設定しています。
フォームのレコードソースに「T-人口」テーブルを設定

検索フォームの作成

フォームヘッダーに検索文字を入力するテキストボックス、先頭から検索ボタン、次へボタンを挿入します。
挿入方法は、フォームをデザインビューで開き、リボンの[フォーム デザイン ツール]~[デザイン]~コントロール グループから、テキストボックスとコマンドボタンをフォームヘッダー内にドラッグし挿入します。
フォームヘッダーにテキストボックスとボタンを挿入

それぞれのボタンにプロパティシート クリック時イベントの[イベント プロシージャ]を設定します。
ボタンにクリック時イベントの[イベント プロシージャ]を設定

フォームのプロパティシート 読み込み時イベントに[イベント プロシージャ]を設定します。
フォームの読み込み時イベントに[イベント プロシージャ]を設定

[イベント プロシージャ]右の[…]ボタンをクリックしVBE画面を表示し、下記のVBAを入力します。

検索するVBAの作成

フォームの読み込み時にレコードセットを作成するVBA
フォームの読み込み時にレコードセットを作成するVBA

Private rs As Recordset

Private Sub Form_Load()
     Set rs = CurrentDb.OpenRecordset("T-人口", dbOpenDynaset)
End Sub

解説

・レコードセットの変数をこのフォーム全体で使用できるよう、プライベートで宣言します。
・フォームの読み込み時に「T-人口」テーブルのレコードセットを作成します。

先頭から検索ボタンのVBAです。
先頭から検索ボタンのVBA

Private Sub コマンド1_Click()
     If IsNull(Me!テキスト1) Then
         MsgBox "都道府県名から検索する文字を入力してください。 "
         Exit Sub
    End If
      
     rs.FindFirst "都道府県名 LIKE '*" & Me!テキスト1 & "*'"
     If rs.NoMatch Then
         MsgBox "見つかりませんでした"
     Else
         Me.Bookmark = rs.Bookmark
         Me.都道府県名.SetFocus
     End If
End Sub

解説

・あいまい検索する文字がテキストボックスに入力されているかどうかチェックし、入力されていなければエラーメッセージを表示します。
・FindFirstメソッドでレコードセットの最初から検索します。
・Like演算子と「*」のワイルドカードを使用し、あいまい検索にしています。
・検索し見つかればNoMatchプロパティからFALSEが返り、見つからなければTRUEが返ります。
・見つかれば、見つかった位置にフォームのブックマークを移動します。

次へボタンのVBAです。
FindFirstメソッドを次から検索するFindNextメソッドに変更しています。
次へボタンのVBA

Private Sub コマンド11_Click()
     If IsNull(Me!テキスト1) Then
         MsgBox "都道府県名から検索する文字を入力してください。 "
         Exit Sub
    End If
      
     rs.FindNext "都道府県名 LIKE '*" & Me!テキスト1 & "*'"
     If rs.NoMatch Then
         MsgBox "見つかりませんでした"
     Else
         Me.Bookmark = rs.Bookmark
         Me.都道府県名.SetFocus
     End If
End Sub

検索を実行しているフォームです。
「島」の文字を入力し[検索]ボタンをクリックすると、「広島県」のレコードに移動します。
「島」の文字を入力し[検索]ボタンをクリック

次に[次へ]ボタンをクリックすると、「福島県」のレコードに移動します。
[次へ]ボタンをクリックすると、「福島県」のレコードに移動

以上を繰り返すと最終レコードまで移動し「見つかりませんでした。」とメッセージが表示されます。
最終レコードまで移動し「見つかりませんでした。」とメッセージが表示される


サンプル データベース : 無料ダウンロード

スポンサーリンク


Accessフォーム メニューへ

Copyright (c) Microsoft-Access.net All rights reserved.