クエリで検索窓の文字で絞り込めるようにする。美容室向け顧客管理システム 開発日記8日目

2020/03/13

Microsoft Accessでアプリを作成中。お客様一覧画面に必須の検索窓をつくりました。

検索窓をつくって動作させるには簡単に思いつくだけで以下のような方法があります。

  • 検索文字をVBAでSQL文字列にして結果を出す
  • クエリを使って絞り込む
  • フィルタを使って絞り込む
  • マクロをつかっていろいろ

個人的に手軽で早くてどの項目を対象にするのかを設定しやすいのが「クエリを使って絞り込む」方法なので、今回もそれを使いました。

まず、この一覧フォームのプロパティには、レコードソースとしてお客様一覧のクエリである「Q_お客様一覧」をダイナセットで指定しています。

そのクエリのデザインビューを見てみると上のような感じ。ポイントは一番右側の、各項目を&で連結しつつ、抽出条件にLIKE句を使っているところです。

検索の部分を拡大するとこのような感じ。つまり、検索対象にしたい項目をフィールドの部分に「長いひと続きの文字列」にして、[SearchBox]と名前を付けている検索窓に入力された文字が含まれるものだけを抽出するという処理です。

Like句はみんな大好き正規表現の書き方で絞り込み条件を指定できる書き方。前後に※印をつけているので、検索窓の文字列が「一部に含まれる」を表します。

フィールドのところがイメージしにくいと思うので、クエリを実行してみると、検索文字列を指定しない場合は上記のような感じになります。

関係ないけれど、メニュータブをつかったので、[SearchBox]への階層が深くなってます。ここをピンポイントで指定するのに戸惑いましたので上の写真は自分へのメモ。

あとは、検索窓の右側あたりに検索の実行ボタンをつくり、「再クエリ」を埋め込みマクロで構わないので仕込んでおけば完成です。

あと、小ネタですが、テキストボックスの書式プロパティに上記のような指定をしてやると、文字が何も入力されていない時だけ案内を表示できます。ヒントを使ってもいいんだけれど、これも自分へのメモとして。