アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESS2016を利用しています。
フォームに入力された値を利用して、
クエリーを 実行したいです。

フォームに「txt‗検索」というテキストボックスがあるとします。
入力はしてもしなくてもOKな仕様です。
もし入力されたら、クエリーで抽出される「ワード」という項目を
LIKE検索したいです。

必ず入力される仕様であれば、抽出条件のところに
ワード Like "*" & [Forms]![フォーム名]![txt_検索]
と指定すれば思い通りの抽出ができるのですが、
空白の場合はこの条件をなくしたいので

フォームの内で
If IsNull(Me.txt_検索) Or Me.txt_検索 = "" Then
pub_検索 = "Like ""*" & Me.txt_検索 & "*"""
End If
とし、プロシージャで下記を記述し

Public Function PF_検索() As Variant
PF_検索= pub_検索
End Function

この関数を抽出条件 のところ「PF_検索() 」を指定しました。
そうすると LIKE検索とはならず、そこに
「Like "*テスト*"」と文字列になってしまい、
「Like "*テスト*"」として検索してしまいます。

どうしたらよいのでしょうか?

質問者からの補足コメント

  • どういうことでしょうか?
    例えばtxt_検索に「歩み」と入力すると
    Like "*歩み*"となり
    PF_検索には「Like "*歩み*"」がセットされます。
    この文字列を直接抽出条件のところに記述すれば
    正しく表示されます。
    しかし、PF_検索()では”Like "*歩み*"”という文字列での検索になってしまっているのだと
    思うのですが。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/05/18 13:44

A 回答 (2件)

VBA は使わずに


ワードの抽出条件を
Like "*" & [Forms]![フォーム名]![txt_検索] & "*" Or [Forms]![フォーム名]![txt_検索] Is Null

とするだけでよろしいのでは?

分かりやすさではこんなのもあり(図で)
「AccessのクエリーでWHERE句のと」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。
希望通りできました。
助かりました。

お礼日時:2018/05/18 15:43

>pub_検索 = "Like ""*" & Me.txt_検索 & "*"""


ワードが抜けてませんか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
希望通りできました。
助かりました。

お礼日時:2018/05/18 15:42

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