これはかなり古いですが、他の人に役立つかもしれません。私はあなたが尋ねたことを正確に行う方法を考えました
私は2016年にしかアクセスできないので、状況は別の場所にある可能性がありますが、それほど多くはありません。まず、各デッキのすべてのテーブルを作成します。最初の列に一意のID、2番目の列にデッキの名前があることを確認してください(このデッキの各エントリで同じになります)。これは私たちに役立ちます。3列目はカードの名前です。他の列にはカードの他の値が含まれますが、私の例では問題ではありません。このように名前を付けます
column name
1 unique_ID
2 DeckName
3 CardName
次に、[作成]タブで[クエリデザイン]を選択します。次に、セクションビューの[ホーム]タブで、[SQL]を選択します。空白のセクションにこれを入力してください私は2つのテーブルを持っています:Table1とTable2
SELECT Table1.DeckName FROM Table1 UNION SELECT Table2.DeckName FROM Table2;
各テーブルを追加し、それぞれの間にUNIONを追加する必要があります。あなたは1つのセミコマだけで文を終えます;
[実行]をクリックすると、すべてのDeckNameが取得されます。クエリを保存して閉じます。
ここで、コンボボックスを使用して、さまざまなデッキから選択できるようにします。[作成]タブで[空白のフォーム]を選択します。「ホーム/ビュー」に移動し、 「デザイン」を選択します。[デザイン]タブで、コンボボックスを選択します。[キャンセル]をクリックしてウィザードをスキップできます。プロパティで[行ソース]をクリックして、作成したクエリを選択します。Cmb_Deckという名前を付けます
2番目のコンボボックスにCmb_Nameという名前を付けます。プロパティ" ColumnCount" put "2"は、このコンボボックスにカードの名前(テーブルのcolumn2)が表示されるためです。少しわかりやすくするために、プロパティ "Column Widths"put"で最初の列を非表示にします。0 "; 1" "(最初の列は0インチ、2番目の列は1インチ)。
作成したテーブルのいずれかをフォームにドラッグし、ウィザードが表示されたら[キャンセル]をクリックします。TableResultという名前を付けます
レイアウトが作成されたので、コンボボックスCmb_Deckに従ってテーブルを変更する必要があります。Cmb_Deckプロパティで、イベントセクションに移動し、[更新後]を選択します。[ ... ]をクリックして、[コードビルダー]を選択します。このVisual Basicエディターウィンドウで、そこにあるものをすべて削除して、これを入力します。
Option Compare Database
Private Sub Cmb_Deck_AfterUpdate()
TableResult.SourceObject = "Table." & Cmb_Deck.Value
Cmb_Name.RowSource = "Table." & Cmb_Deck.Value
End Sub
Private Sub Cmb_Name_AfterUpdate()
Me.TableResult.Form.Filter = "([" & Cmb_Deck.Value & "]." & "[CardName]=""" & Cmb_Name.text & """)"
Me.TableResult.Form.FilterOn = True
End Sub
アクセスに戻り、コンボボックスCmb_Nameを選択し、プロパティevent / afterupdateに移動して、[[イベントプロシージャ]]を選択します。
フォームで、ホーム/ビューに移動し、フォームビューを選択します。最初に最初のコンボボックスでデッキを選択し、次に2番目のコンボボックスでカードの名前を選択します。下の表には、見たいカードだけが表示されています。
これがお役に立てば幸いです
-マシューパキン