Microsoft Access 掲示板

「、」「。」区切りで複数のキーワードをor検索 and検索 / 2

7 コメント
views
4 フォロー
2

可能ですが、下記の点について補足をお願いします。

'条件指定3_複数キーワード入力_読点[、]区切りであいまいor検索 読点[。]区切りで 完全一致(and検索)

の部分ですが、
読点[、]区切りであいまいor検索は、
あいまい(=部分一致) で or条件、つまり、複数のキーワードのうち一つでも含まれれば抽出する、
ということでよね。

読点[。]区切りで 完全一致(and検索) は(読点は句点の間違いとして)、
完全一致でand条件ということはありえないので、部分一致 で and条件ということですよね。
つまり、複数のキーワードをすべて含むデータを抽出する。

あと、読点 と 句点 が混在する可能性はありますか。
「チーフ。リーダー、ボス」とか。

通報 ...
  • 4
    hatena 2020/09/15 (火) 15:14:57 修正 >> 2

    いちおう、たたき台として、

    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
    
        '後略
    
    End Sub
    

    読点(、)、句点(。)混在は可能ですが、And演算子がOr演算子より演算順位が高いので、
    ユーザーがそれを理解していないと期待の結果にならない場合があるので注意が必要。

    上記の strSubFilter には、下記のような条件式が格納されます。

    Me.txtWord3 => strSubFilter
    
    チーフ。リーダー => (職名 Like "*チーフ*" And 職名 Like "*リーダー*")
    
    チーフ、リーダー => (職名 Like "*チーフ*" Or 職名 Like "*リーダー*")
    
    チーフ。リーダー、ボス => (職名 Like "*チーフ*" And 職名 Like "*リーダー*" Or 職名 Like "*ボス*")
    
    
    5

    hatena 様
    迅速な回答いただき誠にありがとうございます。

    句点、部分一致の文中の間違いご指摘ありがとうございます。

    >あと、読点 と 句点 が混在する可能性はありますか。
    >「チーフ。リーダー、ボス」とか。
    読点 と 句点 が混在する可能性はありません。
    どちらかでしか検索出来ないようにしたいとおもっています。

    たたき台を使用させて頂きましたところ、
    思っていたように検索が出来ました。
    本当にありがとうございます。
    教えて頂いたこと、勉強させて頂きます。