2016-04-15 16 views
0

別のルックアップボックスからテーブル名を選択して、ルックアップフィールドの行ソースを定義しようとしています。別のフィールドに応じてルックアップの行ソースを変更する

製品のカタログは、約41の製品グループで構成されています。これらの製品グループはさらにタイプに分けられ、そのうちのいくつかは100種類以上あります。

私は製品グループ(41グループ)のテーブルを持っており、それぞれの製品グループ(41テーブル)ごとに別々のタイプのテーブルがあります。すべてのタイプテーブル名は、プロダクトグループテーブルに表示されているとおりです。私はルックアップボックスから製品グループを選択し、別のルックアップボックスで対応するテーブルからタイプを選択できるようにしたい。

以下の画像は、私が何をしようとしているのかを示すのに役立ちます。

私の最初のルックアップボックスのセットアップ:私の第2のルックアップのセットアップ

enter image description here

enter image description here

が可能これは、ので、誰もが手を貸すことができるかどうか?

ありがとうございました。

+0

VBAを使用できますか?データベースの構造は正規化されていますか?すべての製品タイプが同じテーブルにあり、関連する製品グループに外部キーがある場合は、これを行う方が簡単です。それ以外の場合は、VBAを使用してtbl名を抽出し、2番目のコンボボックスのレコードソースを更新する必要があります。 – MoondogsMaDawg

+0

これは問題ありません。製品グループ名は製品タイプを格納するテーブル名と完全に一致していますか?グループのいくつかの例と、それに対応するテーブルとテーブルの名前を教えてください。すべての製品タイプテーブルが同じ方法(同じ列と列名)で構成されていますか? – MoondogsMaDawg

+0

私は基本的な知識しか持っていません。 私は変数を設定するために関数を使用することを考えました=商品グループボックスで選択された値を次に、2番目のcombobox =その変数のソースを設定します。 それを実装する方法はわかりませんでした。 列Aに製品グループ、列Bに種類を含むスプレッドシートのコンパイルを開始しました。 列A -------------列B グループ1 ---- -------タイプ1 グループ1 -----------タイプ2 グループ1 -----------タイプ3 グループ2 -----------タイプ1 Group2 ----------- Type2など 私はAccessにインポートし、最初のコンボボックスで単純なフィルタを使用します。 – am59fly

答えて

0

要約すると、タイプID、グループID、およびその他の「タイプ」関連フィールドを含む単一のテーブルが必要です。

あなたのグループのComboBoxがその最初の列(フィルタリングがはるかに容易になります)としてIDフィールドを持つ必要があり、だからあなたのコントロールソースは次のようになります。

SELECT [ProductGroup]![GroupID], [ProductGroup]![ProductGroup] 
FROM [ProductGroup] 
ORDER BY [ProductGroup]; 

次にグループコンボボックスのプロパティで[書式]タブのメイクにあなたの列の幅0 "; x" IDフィールドを非表示にします。

タイプコンボボックスのコントロールソースは次のようになります。

SELECT [NewTypeTable]![TypeID], [NewTypeTable]![TypeName] 
FROM [NewTypeTable] 
WHERE [NewTypeTable]![GroupID] Like [Forms]![frmWithComboBoxName]![CboPGroup] 
ORDER BY [NewTypeTable]![TypeName]; 

そして再び、あなたは、IDフィールドを非表示にする場合は、最初の列の幅0" を作る

また、再クエリする必要があります。 。CboPGroupにおける新しい選択に基づいて、第2のコンボボックスをフィルタリングしますCboPGroupafterUpdate()場合に第二コンボボックスコード(VBA)そのためには次のようになります

Forms!frmWithComboBoxName!CboType.Requery