Accessを使って実装できる検索機能なら、コンボボックスより断然、あいまい検索が好き
検索窓に任意の文字を打ち込んで候補を探す、昔から馴染み深い検索方法だし
いかにも「システム」って感じでワクワクする
コンボボックスも便利だけど、図書館クラスの膨大な所蔵資料を一覧で追うのは現実的じゃないし
素人の見よう見まねでも、せっかくシステム作りに取り組むのであれば、実用的にしないとね
Private Sub Cmd_検索_Click()
Me.Filter = "書名 Like '*" & Me.書名検索 & "*'"
Me.FilterOn = True
End Sub
こんな感じで「あいまい検索」を実装してみたものの、単票フォームだと直感的に次作品(書籍)にたどり着けず、手ごたえイマイチ
貸出入力フォームを書籍ごとに分類させることを主目的に、フォームを組んでいるのでほかの様式は選べないし
「コンボボックス」なら検出した候補を一覧化できるよね
さらに、リスト窓から目当ての入力ページに飛べるようにしたら
Accessに慣れないユーザーさんでも直感的に操作できて便利かも
そんなわけで、あいまい検索(検索窓)とコンボボックス(検索結果)を協働させてみた
注意点
検索用テキストボックスと別に、コンボボックスを用意する必要がある
プロパティシート上でコンボボックス用の書式設定を行っておく
あいまい検索(検索窓『書名検索』テキストボックス)
「このフォーム(Me)に表示された112冊の書籍データの中から、検索窓に入力された文字(抽出条件)が含まれるデータのみ抽出する」
*(アスタリスク):ワイルドカード(全て呼び出す)
Private Sub Cmd_検索_Click()
Me.Filter = "書名 Like'*" & Me.書名検索 & "*'"
Me.FilterOn = True
「コンボボックスの中身(RowSource)の内、検索窓の入力データに似ている(Like)タイトルがついた本の『ID』と『書名』を、書籍マスタテーブルから選択(SELECT)する」
Me.検索結果_書籍名.RowSource = "SELECT [書籍ID], [書名] FROM [書籍マスタ] WHERE [書名] Like '*" & Me.書名検索 & "*'"
↑※本ケースでは書籍IDがSELECT結果の連結列(先頭)に含まれており
プロパティシート上でも参照列を指定済なので
ここでまたSELECT列名を指定する必要はなく([書籍ID], [書名])
Me.検索結果_書籍名.RowSource = "SELECT * FROM [書籍マスタ] WHERE [書名] Like '*" & Me.書名検索 & "*'"でもOK
Me.検索結果_書籍名.Requery
Me.検索結果_書籍名.SetFocus
Me.検索結果_書籍名.Dropdown
※最新情報を反映させたコンボボックスをスタンバイし、リストを公開
End Sub
コンボボックス『検索結果_書籍名』(検索結果 表示用 / 非連結)
FindFirstメソッド:現在のフォームのレコードセット(112冊分の在庫情報)から、条件に一致するデータを順次見つけ出して画面を切り替え
Private Sub 検索結果_書籍名_AfterUpdate()
Me.Recordset.FindFirst "[書籍ID] = " & Me.検索結果_書籍名 & ""
※[書籍ID]フィールドのデータ型が文字列の場合は
=""を' ' (シングルクォーテーション) で囲む
Me.検索結果_書籍名 = Null
※使用後のコンボボックス『検索結果_書籍名』を次回のためリセット
End Sub