- ベストアンサー
【Access】複数フィールドを対象とする検索
- Access上で複数のフィールドを対象とする検索を行いたい場合の方法について質問です。
- 検索条件1と検索条件2のテキストボックスに入力された値を使用して、フィールド1~3のいずれかに検索条件1の語を含み、かつ、フィールド4~6のいずれかに検索条件2の語を含むレコードを抽出したいです。
- 現在のコードでは「実行時エラー13、型が一致しません」というエラーが発生しており、正しい記述方法を教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 の長さを調べてフィルターを実行するのも手です。 理由:フォームを開くコマンドとフィルターの実行命令とを併記した場合の不具合を避けるため。
その他の回答 (1)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【蛇足】フィルターを用いるケースではないのでは・・・ 新たにオープンするフォームの抽出条件は SQL文の WHERE節に書くべき。フィルター機能を使うべきではないと思うが・・・。
お礼
フォーム内にコマンドボタンを入れて、教えていただいたコードを 記述したら、うまく検索ができました! f_a_007さん本当にありがとうございました。