プロが教えるわが家の防犯対策術!

ACCESS 2010を使用しています。
一つのテキストボックスに対してキーワードを複数入力して、or条件で
かつ、テキストボックスを複数設置して、テキストボックス間はand条件で検索したいです。

例えば、テキスト型のフィールドが2フィールドあります。
「フィールドあ行」 には 
あ 
あい 
いうえ    

のようなデータがあって、

「フィールドか行」 には

かき
きくけ

のようなデータがあるときに、

「テキストボックスあ行」  に  「あ い」
「テキストボックスか行」  に  「か き く」
を入力して、検索ボタンを押すと、

「フィールドあ行」 が 「あ or い」 を含み、かつ
「フィールドか行」 が 「か or き or く」 を含むレコードを検索する

のようなコードをかきたいのですが、うまくいきません。教えていただけないでしょうか

A 回答 (3件)

Accessはどっ素人ですけど、普通に考えると



「フィールドあ行」

の方は、IN(Replace([テキストボックスあ行]," ”,","))

と IN を使う事で『カンマ区切りの文字のどれかを含む』になりそうな気もしますよ。(当然!憶測です)
「フィールドか行」の抽出条件も上と同行に記載すれば『AND』になりそうな気もしますし。(勿論!憶測です)

ダメでしたら他の回答をお待ちくださいませ。
    • good
    • 0
この回答へのお礼

なかなかうまくできませんでしたが、ありがとうございます!

お礼日時:2020/06/25 23:32

「検索実行」ボタン(MySearch)を作成し、それぞれのテキストボックスの内容を元に、下記のような検索文字列を作成するプログラムを作ることが考えられます。


MyCriteria="(フィールド1 Like '*あ*' Or フィールド1 Like '*い*') And (フィールド2 Like '*か*' Or フィールド2 Like '*き*' Or フィールド2 Like '*く*')"
Me.Filter=MyCriteria
Me.FiterOn=True
具体的には下記のようになります。
MyResearchのクリック時プロシジャーに記載します。
全角スペースを半角に変換していますが、Replaceでも対応済かもしれません。

Private Sub MySearch_Click()
Dim MyCriteria As String, TempString As String

MyCriteria = ""
If Not IsNull(Me![Research1]) Then 'テキストボックス1の場合
TempString = Replace(Me![Research1], " ", " ") '全角スペースを半角に変換
MyCriteria = "(フィールド1 Like '*" & Replace(TempString, " ", "*' Or フィールド1 Like '*") & "*')"
End If

If Not IsNull(Me![Research2]) Then ’テキストボックス2の場合
If MyCriteria <> "" Then
MyCriteria = MyCriteria & " And " '前の検索文字列がある時は、Andを付加する。
End If
TempString = Replace(Me![Research2], " ", " ") '全角スペースを半角に変換
MyCriteria = "(フィールド2 Like '*" & Replace(Me![Research2], " ", "*' Or フィールド2 Like '*") & "*')"
End If

If MyCriteria <> "" Then
Me.Filter = MyCriteria
Me.FilterOn = True
Else
Me.Filter = ""
Me.FilterOn = False
End If
End Sub

参考にして下さい。
    • good
    • 0

No. 2です。


後半のコードで漏れが有りました。
下記で差し替えお願いします。
前半で作成した検索文字列に付加するという事です。

MyCriteria = MyCriteria & "(フィールド2 Like '*" & Replace(Me![Research2], " ", "*' Or フィールド2 Like '*") & "*')"

半角スペースの配置に留意してください。
    • good
    • 0
この回答へのお礼

できました!大変助かります、ありがとうございます。

お礼日時:2020/06/25 23:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!