こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

Access上で「検索ボタン」をクリックすると、
「データ」フォームのフィールド1、フィールド2、フィールド3のいずれかに「検索条件1」の語を含み、かつ、フィールド4、フィールド5、フィールド6のいずれかに「検索条件2」の語を含むレコードを抽出できるようにしたいと思います。

検索条件はテキストボックスに入力するようにしており、テキストボックス名は「検索条件1」、「検索条件2」となっています。

以下のコードでやってみたのですが、「実行時エラー13、型が一致しません」というエラーが出てうまく抽出できません。

Private Sub 検索ボタン_Click()

Dim filter1 As String

filter1 = "フィールド1 like '*" & Me!検索条件1 & "*' or フィールド2 like '*" & Me!検索条件1 & "*' orフィールド3 like '*" & Me!検索条件1 & "*'" And " フィールド4 like '*" & Me!検索条件2 & "*' or フィールド5 like '*" & Me!検索条件2 & "*' orフィールド6 like '*" & Me!検索条件2 & "*'"

DoCmd.OpenForm "データ", acNormal

Forms!データ!.filter = filter1

Forms!データ!.FilterOn = True

End Sub

「検索条件1,2」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、
「データ」フォームが開き、検索をかけるという流れをイメージして作成
しています。
どなたか正しい記述を教えていただけませんでしょうか。
よろしくお願いいたします。

投稿日時 - 2018-06-10 00:04:01

QNo.9506783

困ってます

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

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 の長さを調べてフィルターを実行するのも手です。

理由:フォームを開くコマンドとフィルターの実行命令とを併記した場合の不具合を避けるため。

投稿日時 - 2018-06-10 01:33:43

お礼

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

投稿日時 - 2018-06-10 02:37:58

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

【蛇足】フィルターを用いるケースではないのでは・・・

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

投稿日時 - 2018-06-10 01:56:21

あなたにオススメの質問