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

- ポイントは、
- 検索語を入れるテキストコントロールを複数作成。
- オプションボタンにより「AND」と「OR」の選択の仕組みを作る。
- 検索実行ボタンを設置し、条件分岐処理のプロシージャを割り当てる。
使用例
下図が検索条件フォーム例です。非連結のフォーム上に検索語入力用に「キーワード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条件で検索してみます。
二つの語が含まれているデータが出ています。
(この項終わり)