複数の検索語をAND条件とOR条件で使い分けできる条件設定フォーム

TIPSメインへ戻る

概要説明

検索条件を設定するフォームにおいて、検索語が複数ある場合にAND条件にして絞り込む方法と、 OR条件にして対象を広げる方法を使い分ける仕組みです。

    ポイントは、
  1. 検索語を入れるテキストコントロールを複数作成。
  2. オプションボタンにより「AND」と「OR」の選択の仕組みを作る。
  3. 検索実行ボタンを設置し、条件分岐処理のプロシージャを割り当てる。

使用例

下図が検索条件フォーム例です。非連結のフォーム上に検索語入力用に「キーワード1」「キーワード2」「キーワード3」の三つのテキストボックスを設置。 「使用方法選択」のオプションコントロールを設置し、二つのオプションボタンを入れた。「対象を拡大」をOR条件とし、「対象を絞込」をAND条件としてある。 「検索実行」コマンドボタンのクリック時に処理用プロシージャを割り当てます。

プロシージャの内容

「検索実行」ボタンのクリック時のイベントプロシージャ。この例では検索結果で抽出したレコードをフォームで開いています。

Private Sub Cmd_Kensaku_Click()
' 変数を指定
Dim Ken1 As String 'キーワード1の入力値変数
Dim Ken2 As String 'キーワード2の入力値変数
Dim Ken3 As String 'キーワード3の入力値変数
Dim WhereString As String '検索条件式を入れる変数

Ken1 = Nz(Txt_Kensaku1) 'キーワード1のテキストコントロールの値を代入。
             'Nz関数は未入力の場合の処理用に。
Ken2 = Nz(Txt_Kensaku2)
Ken3 = Nz(Txt_Kensaku3)

Select Case Fra_Kensaku 'オプショングループ名[Fra_Kensaku]の値で分岐処理とする。
Case 1 'OR条件のとき
 WhereString = "" '条件式の初期化
 If Ken1 <> "" Then 'キーワード1が入力されている場合の処理
 WhereString = "[タイトル] Like '*" & Ken1 & "*'" 'キーワード1を条件に指定
 End If
 If Ken2 <> "" Then 'キーワード2が入力されている場合の処理
 If WhereString <> "" Then WhereString = WhereString & " OR "
 WhereString = WhereString & "(タイトル Like '*" & Ken2 & "*')"
 End If
 If Ken3 <> "" Then 'キーワード3が入力されている場合の処理
 If WhereString <> "" Then WhereString = WhereString & " OR "
 WhereString = WhereString & "(タイトル Like '*" & Ken3 & "*')"
 End If

Case 2 'AND条件のとき
 WhereString = ""
 If Ken1 <> "" Then
 WhereString = "[タイトル] Like '*" & Ken1 & "*'"
 End If
 If Ken2 <> "" Then
 If WhereString <> "" Then WhereString = WhereString & " AND "
 WhereString = WhereString & "(タイトル Like '*" & Ken2 & "*')"
 End If
 If Ken3 <> "" Then
 If WhereString <> "" Then WhereString = WhereString & "AND "
 WhereString = WhereString & "(タイトル Like '*" & Ken3 & "*')"
 End If
End Select

'検索条件でフォームを表示する
DoCmd.OpenForm "F_メモ集リスト", acNormal, , WhereString, , , "KW抽出"
End Sub

実施結果

OR条件で検索してみます。

3つの語が含まれているデータが出ています。

AND条件で検索してみます。

二つの語が含まれているデータが出ています。

(この項終わり)