以下の改善に少しでもお役に立てれば幸いです。
表1
AB
1
2
3 2
4 2
5
6
7 6
8 6
9 6
AとBの2つのフィールドを含む単一のテーブルがあります(申し訳ありません...ここでフィールドをより適切に分離しようとすると少し問題が発生します...stackoverflowの新機能)
複数選択リストボックスが 1 つあるユーザー フォームがあります。このリストボックスにはフィールド A が入力されています。ユーザーは、このリストボックスで任意の数の項目を選択できます。
テーブルでは、フィールド B はフィールド A に関連付けられているため、B のエントリによって A のアイテムを選択する省略形の方法が可能になります。私が達成しようとしているのはこの「省略形」です。
例:
リストボックスの選択が 1,6 の場合、実際の選択は 1,6,7,8,9 になります (6 は 7,8,9 に関連します)
リストボックスの選択が 1,5 の場合、実際の選択は 1,5 になります (ここには関係はありません)
リストボックスの選択が 2,6 の場合、実際の選択は 2,3,4,6,7,8,9 になります
B のエントリは、ユーザーが関係を有効または無効にできるため、A にも表示される必要があります (ここでは、A の選択のみが使用されます)。いずれの場合も、選択した内容に対して後処理が行われます。
私が知りたいのは、A:B 関係が有効になっている場合にすべての選択を含む配列 (たとえば、Selection()) にデータを入力する簡単な方法はありますか? これは、最終的に sql "IN(...)" ステートメントにフィードされます。Excelでこれと同様のことを行いましたが、プロジェクトをAccessに変換していて、これを1ステップで達成できるSQLメソッドがあるかどうか疑問に思っていました.
(編集:)これまでのところ、動作するように見える以下を構築しました:
SELECT A
FROM Table1
WHERE A IN(1,2,6) OR B IN(1,2,6);
フィルタリングされた戻り値: 1,2,3,4,6,7,8,9 (まさに私が欲しいもの)
上記の場合、VBA を使用してユーザーが選択した項目をリスト ボックスから抽出し、これらのエントリを上記の "IN(...)" ステートメントに入力できます。
ここで必要なことは、上記の結果を 2 番目のダウンストリーム検索クエリに入力できるようにすることです。特に、上記のクエリからのフィルター処理された戻り値を別の "IN(....)" ステートメントに入力できるようにする必要があります。これを行う簡単な方法はありますか?