複数条件で検索したい!

このQ&Aのポイント
  • 現在のコードでは、複数の条件を絞込むことができません。要件を満たすレコードを絞り込む方法を教えてください。
  • 質問者は、txtBox1の条件とcmb1の条件を満たすレコードのみを絞込みしたいと考えています。
  • どのようにしたら、txtBox1の条件を満たす中のcmb1の条件も満たすレコードを絞り込むことができるでしょうか。
回答を見る
  • ベストアンサー

複数の条件で検索したい!

複数の条件で検索したい! 現在下記のコードでフォームのtxtBoxとcmbBoxの条件でサブフォームを絞込みしています。 これを複数の条件を満たしたレコードだけを絞込みしたいのですが、 txtBox1の条件も拾うしcmb1の条件も拾ってしまう・・・ これを txtBox1の条件を満たした中のcmb1条件も満たすのレコードで絞込みしたいのですが、 どのようにしたら良いか教えてください。よろしくお願いいたします。 Private Sub cmd検索_Click() If Not IsNull(txtBox1) Then サブフォーム.Form.Filter = "顧客コード like '*" & txtBox1.Value & "'" サブフォーム.Form.FilterOn = True End If If Not IsNull(cmb1) Then サブフォーム.Form.Filter = "顧客区分 like '" & cmb1.Value & "'" サブフォーム.Form.FilterOn = True End If If Not IsNull(txtBox2) Then サブフォーム.Form.Filter = "顧客名カナ like '*" & txtBox2.Value & "*'" サブフォーム.Form.FilterOn = True End If

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

一例。試さないで書いてますが。 On Error Resume Next dim p, q, s p = Array( Array( txtBox1, "顧客コード" ), Array( cmb1, "顧客区分" ), Array( txtBox2, "顧客名カナ" ) ) s = "": For Each q In p: If q(0).Value<>"" Then s = s & " And ["&q(1)&"] like '" & q(0).Value & "*'" Next: s = Mid( s, 6 ) If s <> "" Then With サブフォーム.Form: .Filter = s: .FilterOn = True: End With

KOUSUKE0409
質問者

お礼

返答ありがとうございます。 シッカリ機能しました! 相談なんですが、顧客名カナで名字と名前があり、名前の方でも拾いたい為に like '" & q(0).Value & "*'"をlike '*" & q(0).Value & "*'"に変えたのですが、 顧客コードを「1」で検索をすると「0001」と「0010」や「0011」を拾ってしまいます。当然ですが・・・ 特定のフィールドだけ '"txtBox1"*" '"txtBox2"" '*"txtBox3"*" の様にしたいのですが可能ですか? 返答宜しくお願いいたします。

関連するQ&A

  • 複数の条件を満たすレコード検索教えてください!

    複数の条件を満たすレコード検索教えてください! 現在フォームのコマンドボタンでサブフォームの絞込みを下記のコードで行っています・・・が、 ”顧客コード”と”顧客名”を同時に入力して検索すると”顧客コード”を無視して”顧客名”だけを 検索してしまいます、複数の条件を全て満たすにはどうすれば良いか教えてください。 よろしくお願いいたします。 Private Sub cmd検索_Click() If Not IsNull(txt顧客コード) Then S顧客.Form.Filter = "顧客コード like '" & txt顧客コード.Value & "'" S顧客.Form.FilterOn = True End If If Not IsNull(cmb顧客区分) Then S顧客.Form.Filter = "顧客区分 like '" & cmb顧客区分.Value & "'" S顧客.Form.FilterOn = True End If If Not IsNull(txt顧客名) Then S顧客.Form.Filter = "顧客名カナ like '*" & txt顧客名.Value & "*'" S顧客.Form.FilterOn = True End If

  • accessの検索フォームについて(複数条件)

    access初心者です。 本などを参考に検索フォームを作成しました。 1つの条件で検索することは出来たのですが、複数の条件を入力するとうまく検索出来ません。 全ての条件を満たすデータの抽出を行いたいと思います。 「あ」「い」「う」というテキストボックスを用意しています。 Private Sub コマンド14_Click() If Not IsNull(Me.txt_あ) Then ' Me.Filter = "あ LIKE '*" & Me!txt_あ & "*'" End If If Not IsNull(Me.txt_い) Then ' Me.Filter = "い LIKE '*" & Me!txt_い & "*'" End If If Not IsNull(Me.txt_う) Then ' Me.Filter = "う LIKE '*" & Me!txt_う & "*'" End If Me.FilterOn = True End Sub よろしくお願いします。

  • 複数条件のフィルタができない

    マイクロソフトアクセスです。 アクセスで親フォームからサブフォームへフィルタをかけたいのですが Sub フィルタ() With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With End Sub だとうまくできません。 With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' or " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With これならフィルタされるのですが、 どちらかだけになってしまいます。 .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" の文法がおかしいのだと思うのですが、どこが変ですか?

  • accessvba 複数条件でFilterをしたい

    テーブル1 --------------------------------------- ID フィールド1 フィールド2 1 あ A 2 い B 3 う C 4 え D 5 お E --------------------------------------- を作成し、そのテーブルをもとに、帳票フォームを作成しました。 そのフォームに非連結のテキストボックス ID_テキスト フィールド1_テキスト フィールド2_テキスト 3つを設置しました。 行いたい事をクエリ(SQL文)で例えると、 --------------------------------------- SELECT テーブル1.ID, テーブル1.フィールド1, テーブル1.フィールド2 FROM テーブル1 WHERE (((テーブル1.ID) Like "*" & Forms!テーブル1!ID_テキスト & "*") And ((テーブル1.フィールド1) Like "*" & Forms!テーブル1!フィールド1_テキスト & "*") And ((テーブル1.フィールド2) Like "*" & Forms!テーブル1!フィールド2_テキスト & "*")); --------------------------------------- なのですが、 これをクエリを作成せずに、VBAで行いたいです。 各非連結のテキストボックスには、 更新後処理:[イベント プロシージャ] としています。 --------------------------------------- Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub --------------------------------------- は、問題なくできるのですが、 Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" and & _ "フィールド1 like '" & "*" & Me.フィールド1_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub にすると、エラーになります。 andの繋げ方が良くないと思うのですが、どうすればいいでしょうか? 最終的には、 Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" "フィールド1 like '" & "*" & Me.フィールド1_テキスト.Value & "*" & "'" "フィールド2 like '" & "*" & Me.フィールド2_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub のような感じにしたいです。 ご回答よろしくお願いします。

  • ACCESS フォームの検索の件数取得について

    調べても出てこなかったので質問させてください。 人が作ったものなのでよく分からないのですが、 画面のサブフォームに 下のような形で検索をかけて画面に表示しています。 subN.Form.Filter = "KOUMOKU_A Like'*00*'" subN.Form.FilterOn = True この時にこの検索の件数を取得したいのですが、 どうしたらいいのでしょうか? どなたかわかる人お願いします。

  • 1つのテキストボックスで全フィールドを検索するには

    1つのテキストボックスで全フィールドを検索するには Access2002使用です。 現在フォームにて、それぞれのフィールド毎に検索用のテキストボックスを用意してる為、 下記のようになっています。 これを、1つのテキストボックスで全てのフィールドを検索できるようにするには、 どこを訂正したらよろしいでしょうか? 宜しくお願い致します。 Option Compare Database Function exeFilter() Dim strFilter As String If Not IsNull(姓検索) Then strFilter = " AND 姓 Like '*" & Me.姓検索 & "*'" End If If Not IsNull(名検索) Then strFilter = strFilter & " AND 名 Like '*" & Me.名検索 & "*'" End If If Not IsNull(姓ふりがな検索) Then strFilter = strFilter & " AND ふりがな(姓) Like '*" & Me.姓ふりがな検索 & "*'" End If If Not IsNull(名ふりがな検索) Then strFilter = strFilter & " AND ふりがな(名) Like '*" & Me.名ふりがな検索 & "*'" End If If Not IsNull(住所1検索) Then strFilter = strFilter & " AND 住所1 Like '*" & Me.住所1検索 & "*'" End If If Not IsNull(住所2検索) Then strFilter = strFilter & " AND 住所2 Like '*" & Me.住所2検索 & "*'" End If If Not IsNull(住所1ふりがな検索) Then strFilter = strFilter & " AND 住所1ふりがな Like '*" & Me.住所1ふりがな検索 & "*'" End If If Not IsNull(住所2ふりがな検索) Then strFilter = strFilter & " AND 住所2ふりがな Like '*" & Me.住所2ふりがな検索 & "*'" End If Me.Filter = Mid(strFilter, 6) Me.FilterOn = True End Function Private Sub Form_AfterUpdate() End Sub

  • ACCESS VBA にて複数項目のあいまい検索をしようとしています。

    ACCESS VBA にて複数項目のあいまい検索をしようとしています。 txt部所、txt内容、txt備考はそれぞれ検索窓です。 実行すると、 「オブジェクト変数またはWithブロック変数が設定されていません」 というメッセージがでます。 また、動作としては部所の検索のみでき、 内容、備考検索は上記のエラーメッセージが出てできない状態です。 アドバイスよろしくお願いいたします。 以下がコードになります。 Private Sub cmd01_Click() Me.FilterOn = False If txt部所 <> "" Then Me.Filter = "[部所氏名]like '*" & txt部所 & "*'" ElseIf txt内容 <> "" Then Me.Filter = "[内容]like '*" & txt内容 & "*'" ElseIf txt備考 <> "" Then Me.Filter = "[備考]like '*" & txt備考 & "*'" ElseIf Nz(txt部所) & Nz(txt内容) & Nz(txt備考) = "" Then MsgBox "検索条件を入力してください" End If Me.FilterOn = True End Sub

  • 日付型と文字列型、両方にフィルタをするには

    アクセス フォームで日付型(Between and)と文字列型、両方にフィルタをするには? Private Sub cmd_ボタン1_Click() Me.Form.Filter = _ "日付 Between #" & Me.cmb_日付1.Value & "# And #" & Me.cmb_日付2.Value & "#" & _ " and 会社名 like " & "*" & Me.cmb_会社名.Value & "*" Me.Form.FilterOn = True End Sub これのどこが変なのか教えていただけますか? 実行時エラー3075「クエリ式の構文エラー:演算子がありません。」というエラーになります。

  • access 表形式のフォームの複数条件検索

    access 表形式のフォームの複数条件検索の方法を教えてください。 現在は一つのComboボックスでの検索はできていますが、 これを2つ、3つにしたいのです。 検索は、学年、組、名前です。 現在は下記マクロで1つの(学年)はできていますが、それ以外の2つ を組み合すことができません。 下記は、学年を入力するComboボックスのcombo1conditionで学年を 選択し、ボタンのbtn1Searchで検索するといったマクロです。 どなたか教えてください。よろしくお願いいたします。 Private Sub btn1Search_Click() If Me.combo1condition <> "" Then Me.combo1condition.SetFocus Me.Filter = "学年 Like ""*" & Me.combo1condition.Text & "*""" Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = False End If End Sub

  • ACCESSで複数検索をしたいのですが・・・

    T_1・・・テーブル  No.、得意先名、商品名、売上日、備考 Q_1・・・クエリ  「T_1」を元に作成 「Q_1」からなる「F_1」というフォームのヘッダーに [Txt得意先名]、[Txt商品名]、[Txt売上日]という3つのテキストボックスと、 検索ボタン[Cmd検索]を配置し、1~3つの条件を入力して検索する フォームを作りたいと考えています。 そこで、http://okwave.jp/qa/q2029954.html にあるコードを使い、 下記のコードを書いてみました。 ================= Private Sub Cmd検索_Click() Dim MyCriteria As String MyCriteria = "売上日 ="  If IsNull(Txt売上日) Then   MyCriteria = MyCriteria & True  ElseIf Not IsNull(Txt売上日) Then   MyCriteria = MyCriteria & "#" & Me!Txt売上日 & "#"  Else  End If strfilter = MyCriteria strfilter = strfilter & " And 得意先名 Like '*" & Me.Txt得意先名.Value & "*' And 商品名 Like '*" & Me.Txt商品名.Value & "*'" Filter = strfilter FilterOn = True Me.Requery End Sub ================= ただ、上記のコードでは、[Txt売上日]を空欄で検索した場合、 仮に「T_1」で売上日が未入力だった時にそのデータは検索してくれません。 自分でもいろいろ調べて試したのですが、なかなかうまくいかず・・・。 ご存知の方、教えていただけませんでしょうか? よろしくお願いいたします。

専門家に質問してみよう