Microsoft Access 掲示板

検索のテキストが消えてほしい / 3

14 コメント
views
4 フォロー
3
hatena 2020/07/29 (水) 17:17:16 修正

条件を合体できていると勘違いされそうなので、
どこかのタイミングで自動で消えるようにしたいと考えていました。

合体できない=一つのフィールドのみの条件という仕様にするなら、下記のようなコードにすればいいでしょう。

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条件引数に渡せばいいだけです。

通報 ...
  • 7
    セロハン 2020/09/07 (月) 14:40:30 0029a@1c915 >> 3

    以前教えていただいた検索フォームを作成中です。
    そこで、教えていただいたサイトを参考に下記コードを作成しましたが、うまく動きません。

    """ 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 です。