hatena
hatena
2023/06/07 (水) 22:51:49
下記でどうでしょう。
Private Sub 抽出ボタン_Click()
Dim sFilter As String
'日付入力値チェック
If Not IsNull(Me!開始) And Not IsDate(Me!開始) Then
Me!開始.SetFocus
MsgBox "正しい日付を入力してください。", vbCritical + vbOKOnly, "日付入力不備"
Exit Sub
End If
If Not IsNull(Me!終了) And Not IsDate(Me!終了) Then
Me!終了.SetFocus
MsgBox "正しい日付を入力してください。", vbCritical + vbOKOnly, "日付入力不備"
Exit Sub
End If
'期間指定チェック
If IsDate(Me!開始) And IsDate(Me!終了) Then
If Me!開始 > Me!終了 Then
MsgBox "期間指定が不適切です。再入力してください。", vbCritical + vbOKOnly, "期間指定不備"
Exit Sub
End If
End If
'抽出条件式生成
If IsDate(Me!開始) Then
sFilter = " AND 日付 >= #" & Me!開始 & "#"
End If
If IsDate(Me!終了) Then
sFilter = sFilter & " AND 日付 <= #" & Me!終了 & "#"
End If
If Me!キーワード <> "" Then
sFilter = sFilter & " AND [A] & ';' & [B] & ';' & [C] Like '*" & Me!キーワード & "*'"
End If
sFilter = Mid(sFilter, 6) '先頭の" AND "を削除
If sFilter = "" Then
Me.FilterOn = False
Else
Me.filter = sFilter
Me.FilterOn = True
End If
End Sub
A, B, Cの各フィールドに対して部分一致(あいまい検索)になってます。
例えば、Aフィールド 「あいう」、キーワード「う」でも一致とみなします。
もし、各フィールドに対して完全一致の条件にしたいなら、キーワードの条件式のコードを下記に修正してください。
sFilter = sFilter & " AND ';' & [A] & ';' & [B] & ';' & [C] & ";" Like '*;" & Me!キーワード & ";*'"
フィールドの区切り記号として';'(セミコロン)を使用してますが、フィールド値にセミコロンが含まれる可能性がある場合は、含まれる可能性がない文字にしてください。
通報 ...