ユーザーIDの検索基準があり、ユーザーIDを持つ従業員名が単一のテーブルから来るリストボックスコントロールに表示される必要があるという点で、従業員データベースのvbaフォームを開発しています
検索ボックスとして機能するテキスト ボックス (例: ユーザー ID) の値に従って、テーブルの値をリスト ボックスに入力する必要があります。
これを行う方法を教えてください
ユーザーIDの検索基準があり、ユーザーIDを持つ従業員名が単一のテーブルから来るリストボックスコントロールに表示される必要があるという点で、従業員データベースのvbaフォームを開発しています
検索ボックスとして機能するテキスト ボックス (例: ユーザー ID) の値に従って、テーブルの値をリスト ボックスに入力する必要があります。
これを行う方法を教えてください
検索フィールドのデータ型などに依存するため、質問に答えるのは難しいです。したがって、この答えは、それらの点のいくつかで曖昧になります...
まず、フォームで検索値を検索し、それに応じてフィルタリングする検索条件を使用してリストボックスを作成する必要があります。
これを行うには、リストボックスのRowSourceプロパティを設定します。これは、フィルター値のフォーム上のテキストボックスを検索するリストボックスの行ソースの例です...
SELECT tblAgencies.AgencyID, tblAgencies.OrganizationName
FROM tblAgencies
WHERE (((tblAgencies.OrganizationName)
Like "*" & nz([Forms]![frmMainMenu2]![txtSearchAgencies],"") & "*"))
ORDER BY tblAgencies.OrganizationName;
重要な部分はLike...行です。それに関するいくつかのこと...クエリがいくつかの基準についてフォームを参照していることに注意してください。クエリの[Forms]![frmMainMenu2]![txtSearchAgencies]の部分に表示されます。したがって、frmMainMenu2にはtxtSearchAgenciesという検索テキストボックスがあります。
また、NZ関数を使用して、そのテキストボックスをのぞいて少なくとも空の文字列が返されるようにしていることにも注意してください。最後に、ユーザーが部分的な文字列を入力できるように、両端にワイルドカードを指定したLike演算子を使用していることに注意してください。
最後に...検索ボックスの横にコマンドボタンを配置して、フィルター/検索を実行します。それがしなければならないのは、このようなリストボックスを要求することだけです...
Me.lstAgencies.Requery。
また、入力時にフィルタリングするOnChangeイベントで再クエリを試みることもできます。ただし、クエリが遅い場合、これはうまく機能しない可能性があります。
セス
ユーザーID、従業員のフィールドを持つテーブルTABLE1があるとします。コンボボックス(boxidという名前)とテキストボックス(EdtEmployeeという名前)を持つフォームを作成する必要があります。次のようなコンボボックスのrowsource値を定義します
SELECT table1.userid FROM table1 WHERE employee like EdtEmployee & "*";
次に、このようなテキストボックスのlostfocusイベントを定義します
Private Sub EdtEmployee_LostFocus()
BoxId.Requery
End Sub
私は、これがあなたのために働くことを願っています
私はマイクに同意します。私は決して使用したことのない LostFocus の代わりに AfterUpdate イベントを使用します。