複数の検索語を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 '検索条件式を入れる変数

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

'分岐処理 オプショングループ名[Fra_Kensaku]の値で分岐処理とする。
Select Case Fra_Kensaku
Case 1 'OR条件のとき
WhereString = "" '条件式の初期化、空白にする

'キーワード1が入力されている場合の処理、キーワード1を検索条件に指定
If Ken1 <> "" Then
WhereString = "[内容] Like '*" & Ken1 & "*'"
End If

'キーワード2が入力されている場合の処理、キーワード2の値もORで繋いで追加する
If Ken2 <> "" Then
If WhereString <> "" Then WhereString = WhereString & " OR "
WhereString = WhereString & "(内容 Like '*" & Ken2 & "*')"
End If

'キーワード3が入力されている場合の処理、さらにキーワード3の値も追加する
If Ken3 <> "" Then
If WhereString <> "" Then WhereString = WhereString & " OR "
WhereString = WhereString & "(内容 Like '*" & Ken3 & "*')"
End If

Case 2 'AND条件のとき、キーワードの入力状況を見て、同様に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抽出して結果です。 [内容]フィールドにいずれかのキーワードが入っているデータが表示されました。 表示フォームは「F_メモ集リスト」です。

(この項終わり)