0

以下の改善に少しでもお役に立てれば幸いです。

表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(....)" ステートメントに入力できるようにする必要があります。これを行う簡単な方法はありますか?

4

1 に答える 1