|
>メインフォームのコードフィールドに1を入力し、その後サブフォームにデータを入力すると
>サブフォームに入力したデータのコードフィールドには自動的に1が入力されます
>これはテーブルAの主キーとテーブルBの主キーではないフィールドがリレーションされているため
>という認識であっていますでしょうか?
私も素人なので、正確な知識がありません。そういう前提で読んでください。
厳密に言うと、そのような認識は間違っていると思います。
上記のようになるのは、リレーションシップを設定しているからではなく、
メイン/サブフォームだからそうなるのです。
リレーションシップを外してしまっても、同じように動くはずですから、
リレーションシップとは関係ありません。
つまり、「リレーションされている」という言葉を使った点で
間違っていると思います。
>同じコードが重複するため主キーに設定できないため使えません。(これも認識正しいでしょうか?)
これは、まさにそのとおりです。
主キーの値は、他のレコードと同じ値を持つことはできません。
>何か良い方法はないでしょうか?
普通に両テーブルを結合させるフィールドを設けるだけです。
まず、テーブルAに主キーを設ける必要があります。
テーブルAの「コード」フィールドが主キーになれないことは、
巻さんの仰るとおりです。
そこで、例えば、オートナンバー型の「A_ID」フィールドを設け、
これを主キーにします。
「A_ID」というのはテーブルAのIDという意味です。
テーブルBの「ID」フィールドと混同しないようにするため、
フィールド名をちょっと変えます。
次にテーブルBに「A_ID」フィールドを設けます。こちらは長整数型にします。
リンク親フィールドとリンク子フィールドには「A_ID」フィールドを指定します。
蛇足ですが、テーブルAの主キー「A_ID」フィールドを設けた場合、
テーブルBには、「コード」フィールド、「日にち」フィールド、
「部署」フィールドを設ける必要がなくなりますね。
|
|