次の方法で共有

フォームフィルター 一つのテキストボックスで複数のフィールド検索する方法

Anonymous
2012-08-23T14:09:33+00:00

何時もお世話になっております。

いろいろ調べたのですが、当方の基本的な知識が不足していると思われ、

自力での解決が難いため、アドバイスいただきたく投稿させていただきます。

Q フォームフィルターを利用して、一つのテキストボックスで複数のフィールド検索する方法について知りたい。

現在の状況

検索テキストボックス名       文字列入力

検索したいフィールド(3つ)     [コード] [日本語名] [英語名]  (いずれもテキスト型です)

下記の要領で、一つのフィールド(例: [コード]フィールド)を検索することについては問題なく行えました。

-- プロシジャー--

Private Sub フィルタ_Click()

If 文字列入力 <> "" Then

Filter = "コード Like ""*" & 文字列入力 & "*"""

    FilterOn = True

Else

    FilterOn = False

End If

End Sub

--------プロシジャー終わり-----------------

これを元にほかの二つのフィールドもフィルターの検索対象にしたいので、

下記の通り OR でつないでみましたがエラーとなり、作動しません。

-- プロシジャー--

Private Sub フィルタ_Click()

If 文字列入力 <> "" Then

Filter = "コード Like ""*" & 文字列入力 & "*""" Or "日本語名 Like ""*" & 文字列入力 & "*""" Or  "英語名 Like ""*" & 文字列入力 & "*""" 

FilterOn = True

Else

FilterOn = False

End If

End Sub

--------プロシジャー終わり-----------------

おそらく初歩的なミス等ありお恥ずかし限りなのですが

解決方法をご教示いただきたくお願い申し上げます。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-08-23T16:13:15+00:00

こんばんは、MukkuMukuです。

まず、どんなエラーなのか書くべき。"型が一致しません" でしょうか

Me.Filter = "コード Like ""*" & 文字列入力 & "*"" or 日本語名 Like ""*" & 文字列入力 & "*"" or 英語名 Like ""*" & 文字列入力 & "*"""

ではないでしょうか。ダブルクォーテーションは特別な意味を持つ文字ですから単純に並べるだけではうまくいかないのです。余分なダブルクォーテーションがあるということが原因でしょう。すごく見づらいですがよーく見比べてみてください。

Application.BuildCriteria メソッドを使うと、目の疲れが少し低減できるかもしれません。

また、ダブルクォーテーションのエスケープをReplaceで考えたらこうなった。

Me.Filter = BuildCriteria("コード", dbText, "like *" & Replace(文字列入力, """", """""") & "*") & _

            " Or " & _

            BuildCriteria("日本語名", dbText, "like *" & Replace(文字列入力, """", """""") & "*") & _

            " Or " & _

            BuildCriteria("英語名", dbText, "like *" & Replace(文字列入力, """", """""") & "*")

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-08-23T23:36:56+00:00

    Mukku muku、

    おはようございます。いつもお世話になっております。

    エラーの内容を明記せず、大変失礼いたしました。

    ”ご指摘の通り”方が一致しません。” というエラーでした。

    教えていただいた、下記の方法で、無事複数フィールドを参照できるようになりました!

    見よう見まねでコードを書いているため、ダブルクォーテーションの意味を

    正しく理解できていないようです。。すみません。

    Me.Filter = "コード Like ""*" & 文字列入力 & "*"" or 日本語名 Like ""*" & 文字列入力 & "*"" or 英語名 Like ""*" & 文字列入力 & "*"""

    Application.BuildCriteria  という方法についても教えていただき

    ありがとうございます。少々当方には難解なのですが確かにすっきり見やすいです。

    勉強して、今後利用できるようになりたいと思います。

    お忙しいところ、ご教示いただきましてありがとうございました。

    大変助かりました。 また今後ともよろしくお願い致します。

    ReikoK

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません