Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1048 / 9994 ←次へ | 前へ→

【12248】Re:重複する値があるため主キーとして設定できない
回答  かるびの  - 13/1/23(水) 3:31 -

引用なし
パスワード
   >メインフォームのコードフィールドに1を入力し、その後サブフォームにデータを入力すると
>サブフォームに入力したデータのコードフィールドには自動的に1が入力されます
>これはテーブルAの主キーとテーブルBの主キーではないフィールドがリレーションされているため
>という認識であっていますでしょうか?

 私も素人なので、正確な知識がありません。そういう前提で読んでください。

 厳密に言うと、そのような認識は間違っていると思います。
 上記のようになるのは、リレーションシップを設定しているからではなく、
メイン/サブフォームだからそうなるのです。
 リレーションシップを外してしまっても、同じように動くはずですから、
リレーションシップとは関係ありません。
 つまり、「リレーションされている」という言葉を使った点で
間違っていると思います。


>同じコードが重複するため主キーに設定できないため使えません。(これも認識正しいでしょうか?)
 これは、まさにそのとおりです。
 主キーの値は、他のレコードと同じ値を持つことはできません。


>何か良い方法はないでしょうか?
 普通に両テーブルを結合させるフィールドを設けるだけです。

 まず、テーブルAに主キーを設ける必要があります。
 テーブルAの「コード」フィールドが主キーになれないことは、
巻さんの仰るとおりです。
 そこで、例えば、オートナンバー型の「A_ID」フィールドを設け、
これを主キーにします。
「A_ID」というのはテーブルAのIDという意味です。
テーブルBの「ID」フィールドと混同しないようにするため、
フィールド名をちょっと変えます。

 次にテーブルBに「A_ID」フィールドを設けます。こちらは長整数型にします。

 リンク親フィールドとリンク子フィールドには「A_ID」フィールドを指定します。


 蛇足ですが、テーブルAの主キー「A_ID」フィールドを設けた場合、
テーブルBには、「コード」フィールド、「日にち」フィールド、
「部署」フィールドを設ける必要がなくなりますね。
337 hits

【12247】重複する値があるため主キーとして設定できない 13/1/22(火) 16:06 質問[未読]
【12248】Re:重複する値があるため主キーとして設定... かるびの 13/1/23(水) 3:31 回答[未読]
【12249】Re:重複する値があるため主キーとして設定... 13/1/23(水) 16:34 回答[未読]
【12250】Re:重複する値があるため主キーとして設定... かるびの 13/1/24(木) 1:56 回答[未読]
【12252】Re:重複する値があるため主キーとして設定... 13/1/24(木) 16:37 質問[未読]
【12254】Re:重複する値があるため主キーとして設定... かるびの 13/1/25(金) 1:43 回答[未読]
【12257】Re:重複する値があるため主キーとして設定... 13/1/25(金) 12:18 質問[未読]
【12259】Re:重複する値があるため主キーとして設定... かるびの 13/1/26(土) 0:54 回答[未読]
【12265】Re:重複する値があるため主キーとして設定... 13/1/28(月) 10:20 質問[未読]
【12268】Re:重複する値があるため主キーとして設定... かるびの 13/1/29(火) 0:03 回答[未読]
【12272】Re:重複する値があるため主キーとして設定... 13/1/30(水) 15:50 お礼[未読]

1048 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free