条件を合体できていると勘違いされそうなので、
どこかのタイミングで自動で消えるようにしたいと考えていました。
合体できない=一つのフィールドのみの条件という仕様にするなら、下記のようなコードにすればいいでしょう。
Private Sub btn案件NO検索_Click()
Dim ctl As Control
For Each ctl In Me.Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox
If ctl.Name <> "txt案件NO検索" Then ctl.Value = Null
End Select
Next
DoCmd.OpenForm "F_案件", , "", "[案件NO]=[Forms]![F_メインメニュー]![txt案件NO検索]"
End Sub
このようなフォーム、コントロールが多数あるというなら、汎用関数にしてそれを各フォームから呼び出すという方法にもできますが、まずは上記のコードを理解してからですね。
いずれは、検索条件を合体させたい(検索した結果から新たに絞り込みできる)
とも考えていたのですが複雑になりそうでしょうか。
複数の抽出条件を設定したいということなら、下記を参考にしてください。
複数条件の抽出フォームの設計 その1 - hatena chips
上記はヘッダーに条件コントロールを配置して自身のフォームにフィルターをかけてますが、別のフォームを開く場合は、
生成された抽出条件(strFilter)を DoCmd.OpenForm のWhere条件引数に渡せばいいだけです。
通報 ...
以前教えていただいた検索フォームを作成中です。
そこで、教えていただいたサイトを参考に下記コードを作成しましたが、うまく動きません。
""" If Not IsNull(Me.txt伝票NO) Then
strFilter = strFilter & " AND " & BuildCriteria("伝票NO", 10, "" & Replace(Me.txt伝票NO, vbCrLf, " And ") & "")
End If
DoCmd.OpenForm "F_案件", acNormal, "", "Mid(strFilter,10)", , acNormal
"""
①txt伝票NOに、改行区切りで入れられた複数の伝票NOについて
全て検索する。
②伝票NOは短いテキスト。
このコードを使うと「strFilter」のパラメータを聞いてきます。
エラー業は
DoCmd.OpenForm "F_案件", acNormal, "", "Mid(strFilter,10)", , acNormal です。