単標フォームにレコードの検索機能を作る

TIPSメインへ戻る

概要説明

単票フォームでは表示されているレコードは1件のみです。検索キーワードに含まれるレコードを探すて表示できれば便利です。 そこでヘッダ部に探したいテキストが含まれているレコードを探す機能を付けてみましょう。続けて探す機能も付けてみます。

作成手順

1.使用するフォーム

使用するフォームは次のようなものです。テーブルは[日記]の単票フォームで表示は[日付]と[日記]フィールドを表示している。

2.このフォームのヘッダ部に2つのコマンドボタンと、1つのテキストボックスを追加した。

いずれも非連結のものでる。
 それらの名前は次のようにした。
  ①探すボタン:名前[cmd_sagasu] 
  ②次を探すボタン:名前[cmd_tsugi]
  ③テキストボックス:名前[txt_sagasu]

3.機能

②のテキストボックスに日記データからさがしたい検索キーワードを入力し。 ①のボタンでキーワードを含むレコードを表示させる。さらに探したいい時は②のボタンで探して表示させる。

4.各ボタンに次のプロシージャを作成

(※コピー&ペーストで使えます)

①探すボタン:名前[cmd_sagasu]のプロシージャ
 Private Sub cmd_sagasu_Click()

 ' DAOレコードセットを開く
 Dim rs As DAO.Recordset
 Set rs = Me.RecordsetClone

 ' テキストボックスに入れた語を含むレコードを探す
 rs.FindFirst "日記 like '*" & Me.txt_sagasu & "*'"

 If rs.NoMatch Then '見つからなかった時の処置
 Beep
 MsgBox "見つかりません"

 Else
 ' 見つかった時はレコードセットと同じレコードを表示する
 Me.Bookmark = rs.Bookmark
 Me.日記.SetFocus

 End If
 rs.Close: Set rs = Nothing

 End Sub

 

②次を探すボタン:名前[cmd_tsugi]

 Private Sub cmd_tsugi_Click()

 ' DAOレコードセットを開く
 Dim rs As DAO.Recordset
 Set rs = Me.RecordsetClone

 ' 現在の表示レコードをレコードセットに合わせる
 rs.Bookmark = Me.Bookmark

 ' テキストボックスに入れた語を含むレコードの次を探す
 rs.FindNext "日記 like '*" & Me.txt_sagasu & "*'"

 If rs.NoMatch Then '見つからなかった時の処置
 Beep
 MsgBox "最後まで検索しました"
 Me.txt_sagasu.SetFocus
 Me.txt_sagasu = ""

 Else
 ' 見つかった時はレコードセットと同じレコードを表示する
 Me.Bookmark = rs.Bookmark
 Me.日記.SetFocus

 End If

 rs.Close: Set rs = Nothing

 End Sub

 

実施結果

「病院」を検索語にした一件目の結果です。次を探してみましょう。

次の結果です。こうして次々に関係レコードが検索されて表示できます。

(この項終わり)