|  | ||
| 検索フォームの作り方|あいあまい検索・次へボタン:Microsoft Access | ||
| Accessフォーム メニューへ | ||
| 前回抽出フォームを作成しましたが、今回はあいまい検索し見つかったレコードに次々と移動するVBAを作成します。ここで作成したサンプル データベース ファイルは無料でダウンロードできます。
スポンサーリンク
  フォームのレコードソースにはデータの元になる「T-人口」テーブルを設定しています。  検索フォームの作成フォームヘッダーに検索文字を入力するテキストボックス、先頭から検索ボタン、次へボタンを挿入します。挿入方法は、フォームをデザインビューで開き、リボンの[フォーム デザイン ツール]~[デザイン]~コントロール グループから、テキストボックスとコマンドボタンをフォームヘッダー内にドラッグし挿入します。  それぞれのボタンにプロパティシート クリック時イベントの[イベント プロシージャ]を設定します。 ![ボタンにクリック時イベントの[イベント プロシージャ]を設定](image/img2f-4.gif) フォームのプロパティシート 読み込み時イベントに[イベント プロシージャ]を設定します。 ![フォームの読み込み時イベントに[イベント プロシージャ]を設定](image/img2f-5.gif) [イベント プロシージャ]右の[…]ボタンをクリックしVBE画面を表示し、下記のVBAを入力します。 検索するVBAの作成フォームの読み込み時にレコードセットを作成するVBA Private rs As Recordset Private Sub Form_Load() Set rs = CurrentDb.OpenRecordset("T-人口", dbOpenDynaset) End Sub 解説・レコードセットの変数をこのフォーム全体で使用できるよう、プライベートで宣言します。・フォームの読み込み時に「T-人口」テーブルのレコードセットを作成します。 先頭から検索ボタンの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メソッドに変更しています。  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 検索を実行しているフォームです。 「島」の文字を入力し[検索]ボタンをクリックすると、「広島県」のレコードに移動します。 ![「島」の文字を入力し[検索]ボタンをクリック](image/img2f-9.gif) 次に[次へ]ボタンをクリックすると、「福島県」のレコードに移動します。 ![[次へ]ボタンをクリックすると、「福島県」のレコードに移動](image/img2f-10.gif) 以上を繰り返すと最終レコードまで移動し「見つかりませんでした。」とメッセージが表示されます。  サンプル データベース : 無料ダウンロード | ||
| 
スポンサーリンク
 Accessフォーム メニューへ 
Copyright (c) Microsoft-Access.net All rights reserved.
 | ||