• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Access】複数フィールドを対象とする検索)

【Access】複数フィールドを対象とする検索

このQ&Aのポイント
  • Access上で複数のフィールドを対象とする検索を行いたい場合の方法について質問です。
  • 検索条件1と検索条件2のテキストボックスに入力された値を使用して、フィールド1~3のいずれかに検索条件1の語を含み、かつ、フィールド4~6のいずれかに検索条件2の語を含むレコードを抽出したいです。
  • 現在のコードでは「実行時エラー13、型が一致しません」というエラーが発生しており、正しい記述方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Q、正しい記述を教えていただけませんでしょうか? A、以下のようです。 Private Sub コマンド_フィルターの実行_Click() On Error GoTo Err_コマンド_フィルターの実行_Click   Dim strFilter  As String   Me.FilterOn = True   strFilter = "(Field_1 Like ""*" & Me.テキスト_検索条件1 & "*""" & _       " Or Field_2 Like ""*" & Me.テキスト_検索条件1 & "*""" & _       " Or Field_3 Like ""*" & Me.テキスト_検索条件1 & "*"")" & _       " AND (Field_4 Like ""*" & Me.テキスト_検索条件2 & "*""" & _       " Or Field_5 Like ""*" & Me.テキスト_検索条件2 & "*""" & _       " Or Field_6 Like ""*" & Me.テキスト_検索条件2 & "*"")"   Me.Filter = strFilter Exit_コマンド_フィルターの実行_Click:   Exit Sub Err_コマンド_フィルターの実行_Click:   MsgBox Err.Description   Resume Exit_コマンド_フィルターの実行_Click End Sub 【エラーの原因】 検索条件を”(ダブルクォーテーション)で囲んでいないこと。 (注意)””内の”は””と書く。 >データフォームが開いて検索をかける この場合、OpenArgs で strFilter を引き渡す。で、データフォーム側では OpenArgs の長さを調べてフィルターを実行するのも手です。 理由:フォームを開くコマンドとフィルターの実行命令とを併記した場合の不具合を避けるため。

jyona51
質問者

お礼

フォーム内にコマンドボタンを入れて、教えていただいたコードを 記述したら、うまく検索ができました! f_a_007さん本当にありがとうございました。

その他の回答 (1)

回答No.2

【蛇足】フィルターを用いるケースではないのでは・・・ 新たにオープンするフォームの抽出条件は SQL文の WHERE節に書くべき。フィルター機能を使うべきではないと思うが・・・。

関連するQ&A