1

ユーザーがテキスト ボックスに入力した値を使用して連続フォームをフィルター処理できるようにする必要があります。また、連続フォームは、いくつかのレベルのナビゲーション サブフォーム内にもネストされています。これは簡単に思えますが、Web で見つけたすべての例では、vba の代わりにマクロを使用しています。

構造をセットアップし、テキスト ボックス txtFilter の AfterUpdate プロシージャを次のように記述しました。

Private Sub txtFilter_AfterUpdate()
    Dim filterval As String
    filterval = txtFilter.Value
    With Forms!Main!NavigationSubform.Form!NavigationSubform.Form
        .Filter = "LastName Like " & filterval
        .FilterOn = True
    End With
End Sub

さまざまな構文で遊んでみましたが、どれも正しく機能していないようです。ファイル共有サイトからデータベースの関連部分をダウンロードするためのリンクを次に示します: http://jmp.sh/v/HGctZ4Ru74vDAjzN43Wq

ユーザーがテキストボックスを使用して連続フォームをフィルタリングできるように、これを変更する方法を誰かに教えてもらえますか?

4

2 に答える 2

2

これを使用して動作させました:.Filter = "LastName Like """ & filterval & """"

文字列の場合でも、煩わしい文字列識別子が必要になることがあります。

わかりました。フォームをレコードなしで開き、自分 (またはユーザー) が指定したレコードだけを取得するのは、少しやり直すだけで最も簡単です。(オリジナルではなくコピーで作業することをお勧めします) 1:連続フォームで、レコードソースを削除します。Late Binding (Kinda) を使用します。 2:次に、txtFilter ボックスの下のコードを削除し、ボックス自体を削除します。3: レコードソースとして次のようなものを含むコンボボックスを追加します: SELECT DISTINCT myTable.LastName FROM myTable ORDER BY myTable.LastName;(これにより姓の一意のリストが取得されるため、名前の綴りを知る必要はありません。また、少なくとも 1 つの一致が保証されます) 4:更新後そのコンボボックスのイベント、次のようなコードを追加します。

Dim strSource As String
strSource = "SELECT mt.IntakeNumber, mt.ClientNumber, " & _
    "mt.LastName, mt.FirstName, mt.ConsultationDate " & _
    " FROM myTable mt " & _
    "WHERE (mt.LastName)= '" & Me.cboFilter.Value & "'"

Me.RecordSource = strSource
Me.Requery

明らかに、必要に応じてテーブルとフィールドの名前を変更する必要がありますが、うまくいけばアイデアが得られます。

于 2013-11-13T20:51:03.763 に答える