お世話になります。
AccsessVBA学習1.5月ほどの者です。
検索フォームを作っており、
↓こちらのスレッドの続きになります。
「、」「。」区切りで複数のキーワードをor検索 and検索
https://zawazawa.jp/ms-access/topic/329
先日上記のスレッドで親切に教えて頂き、
1つのテキストボックスで、
読点[、]区切りで部分一致でor条件
句点[。]区切りで部分一致でand条件
という、複数ワードの条件を切り替える検索が実現できました。
<質問>
もう1つ条件を追加で、
1つのテキストボックスで、
「▲」などの記号区切りで
(not検索)~を含まない除外検索、
の条件を切り替えるような事は可能でしょうか?
(Googleのweb検索などの「-」をつけると除外検索出来るようなイメージ)
<実現したい検索条件>
職名というレコードに
チーフ
SPチーフ
ADチーフ
というレコードがあったとして、
チーフで検索すると、上記全てが表示されますが、
SPのキーワードを除いたレコードを検索表示したいと思っています。
入力テキスト:Me.txtWord3
検索対象フィールド:職名
検索語句例:職名)チーフ▲SP
→職名でチーフ が含まれるレコードのうちで、SP を除いたレコードが検索表示される
<質問-補足>
~を含まない除外検索の場合、抽出条件に
Not Like " "
というところまでは理解できたのですが、
そもそも実現したいような事が可能なのか、
除外検索用の別のテキストボックスを用意する必要があるのか、
等も含め質問させていただきます。
どのようなコード、方法があるか教えていただけたらありがたいです。
質問ばかりで恐縮ですが、よろしくお願いします。
先日のスレッドのhatena様に教えて頂いた、サンプルコードを記載します。
※読点[、]、句点[。]、記号[▲]区切りが、複数含む検索はしない予定です。
>>>>>>>>サンプルコード>>>>>>>>>>>>>>
Private Sub btnSubmit_Click()
Dim strFilter As String
'条件指定3_複数キーワード入力
'読点[、]区切りで部分一致でor条件 句点[。]区切りで部分一致でand条件)
If Me.txtWord3 <> "" Then
Dim strSubFilter As String
strSubFilter = Me.txtWord3
strSubFilter = "*" & Replace(strSubFilter, "。", "* And *") & "*"
strSubFilter = Replace(strSubFilter, "、", "* Or *")
strSubFilter = "(" & BuildCriteria("職名", dbText, strSubFilter) & ")"
strFilter = strFilter & " AND " & strSubFilter
End If
'先頭の" AND "を取り除く
strFilter = Mid(strFilter, 6)
'フィルター条件の設定
Me.Filter = strFilter
'フィルターの実行 (もしくは解除)
Me.FilterOn = (strFilter <> "")
'フィルター条件空の場合のメッセージ
If Me.FilterOn = False Then
MsgBox "検索条件を入れてください"
End If
'フィルター条件空の場合のメッセージ
If (Me.Recordset.RecordCount = 0) Then
MsgBox "該当データはありません"
Cancel = True
End If
End Sub
でいかがでしょう。
kitasue 様
回答いただき誠にありがとうございます。
コードを使用させて頂きましたところ、
▲後のワードで除外検索が出来ました。
<質問>
大変恐縮ですが追加で質問させていただきます。
下記のように除外ワードを複数指定し検索は可能でしょうか?
(読点[、]でor条件、句点[。]and条件では、
複数ワードを指定出来たのですが、除外検索では難しいでしょうか?)
職名というレコードに
チーフ
SPチーフ
ADチーフ
というレコードがあったとして、
検索語句例:チーフ▲SP▲AD
→職名でチーフ が含まれるレコードのうちで、SP と AD を除いたレコードが検索表示される
※現在のコードで、上記の検索をすると下記のようなエラーmsgが出ました。
「実行時エラー'2435'
指定した式の閉じかっこが多すぎます。」
もし良い案がありましたら、教えて頂けましたら幸いです。
kitasue 様
度々のレス失礼します。
別枠で新たに除外検索用に、
txtWord4というテキストボックスを用意し、
除外ワードだけを複数指定するという事は実現できました。
レス2番のように1つのテキストボックスで、
複数の除外ワードを指定する事が、
実現可能でしたらお知恵をお借り出来ましたらありがたいです。
よろしくお願いします。
でいかがでしょうか。
kitasue 様
ご回答いただき誠にありがとうございます。
コードを使用させて頂きましたところ、
▲後の複数ワードで除外検索が出来ました。
ご親切に教えていただき、本当にありがとうございます。
教えて頂いたコード、勉強させて頂きます