• 締切済み

Accessでの顧客管理フォームを作成しています

フォーム上で複数条件の絞込みをしたいのですが。 添付画像のようなフォームで、たとえば「日付」と「会員番号」を入れて検索をすると、サブフォームにそれだけが反映するような形式にしたいのです。 昔マクロを使って、一つだけの条件で表示させることはできたのですが、それを他の人が複数検索できるように修正をしてくれました。 その人は退社され、管理データが大きく変わったために修正を余儀なくされたのですが。。。 よろしくお願いします。

みんなの回答

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

No.1の回答者です。 回答の中に確認用の MsgBox f が残っていたので、削除してください。

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.1

サブフォームのFilterプロパティ(とFilterOnプロパティ)を制御します。 絞り込みなので各条件をANDで結びます。 各テキストボックスに文字がある場合にその条件の文字列を追加します。 サブフォームが[サブフォーム1]の場合です。 各テキストボックス名と元テーブルのフィールド名が[日付] [名前] [会員番号] [金額]の場合です。 コマンドボタンは[検索]です。 会員番号は文字列でなく数値の場合です。 名前は入力した文字を含むデータを選択します。 Private Sub 検索_Click() Dim f As String f = "(TRUE)" '条件が無かった場合は全部を選択する f = f & IIf(Nz([日付]) = "", "", "AND([日付]=#" & [日付] & "#)") f = f & IIf(Nz([名前]) = "", "", "AND([名前] LIKE '*" & [名前] & "*')") f = f & IIf(Nz([会員番号]) = "", "", "AND([会員番号]=" & [会員番号] & ")") f = f & IIf(Nz([金額]) = "", "", "AND([金額]=" & [金額] & ")") MsgBox f サブフォーム1.Form.Filter = f サブフォーム1.Form.FilterOn = True End Sub