引用:
ただ、予算額はA_ID、B_ID、C_IDの3フィールドを主キーとすることになり、予算額テーブルを作成入力していく際に、C_IDをB_IDに応じて絞り込めれば思った次第です。
やはり、Name抜きでIDだけで入力していくしかないのか、フォームをわざわざ作るしかないのでしょうか。
出来なくは無いです。
フィールドの値集合ソース に、
SELECT [M_BC].[C_ID], [M_BC].[C_NAME]
FROM [M_BC]
WHERE [M_BC].[B_ID] = [トランザクションテーブル名].[B_ID];
の様に、直前で入力した B_ID の値で、抽出を行います。
考え方は フォームの
フォームのテキストボックスに入力された値をクエリの抽出条件に設定する
https://www.moug.net/tech/acopr/0040014.html
と、同じです。
入力中のレコードの フィールドは、それで表示されます
でも、入力済みのレコードにおいて、カレントレコードのレコードと違う B_ID が 入力されていると
カレントレコードの B_ID が抽出条件に適用されますから、
C_ID を保存する形にしていると
100・ああ--------5・かかか--------1・ささささ 1000
---------6・ききき--------1・せせせせ 4000
↓
100・ああ--------5・かかか--------1・せせせせ 1000
---------6・ききき--------1・せせせせ 4000
の様になってしまいます。
なので、テーブルではなく、クエリで
SELECT
[T_データ].[ID],
[T_データ].[A_ID], [M_A].[A_NAME],
[T_データ].[B_ID], [M_B].[B_NAME],
[T_データ].[C_ID], [M_C].[C_NAME]
FROM
(
([T_データ] LEFT JOIN [M_A] ON [T_データ].[A_ID]=[M_A].[A_ID])
LEFT JOIN [M_B] ON [T_データ].[B_ID] = [M_B].[B_ID]
)
LEFT JOIN [M_C] ON [T_データ].[C_ID] = [M_C].[C_NAME]
の様にし、
[T_データ].[A_ID] [T_データ].[B_ID] [T_データ].[C_ID]
を、ルックアップやコンボで選択させ、その NAME の値は、クエリ側の JOIN で表示させればいけるかと。
でも、更に今回は難関があって
[M_A].[A_ID]
[M_B].[B_ID]
[M_C].[C_ID]
これらが、ユニークでないとダメ。
今回は、
[B_ID] [C_ID] がそれぞれユニークではありません。
更に、JOIN を組み合わせれば 実現は可能ですが、動作は重くなります。
確実なのは、番号体系を変える事なのですが
変更できないのであれば
C_ID 表示ID C_NAME
10051 1 ささささ
10052 2 しししし
10053 3 すすすす
:
の様に、内部用のID と 表示用のID を別に持ってであれば お手軽かと。
個人的には、この番号体系 で、絞り込み 機能を
テーブルの ルックアップのみで実現は行わないです。