お世話になっております。
社員の口座を管理するためのフォームを作成しました。
そのフォームは閲覧、編集、登録ができます。
いざ社員の口座を登録しようとすると、「インデックス、主キー、またはリレーションシップで重複される値があるため・・・または重複する値を使用できるように再定義してください」と出ます。
テーブル構成は、
☆銀行コードマスタ
銀行コード:数値型(主キー、重複なし)
銀行名:テキスト型
銀行名_カナ:テキスト型
☆支店コードマスタ
支店コード:数値型(主キー、重複あり)
支店名:テキスト型
支店名_カナ:テキスト型
銀行コード:数値型(主キー、重複あり)
☆社員口座管理テーブル
社員番号:数値型
銀行名:テキスト型
銀行コード:数値型
支店名:テキスト型
支店コード:数値型
口座番号:数値型
口座名義:テキスト型
☆口座登録フォーム
SQL
SELECT 社員口座管理テーブル.*, 銀行コード.銀行コード AS 銀行コード_銀行コード,
支店コード.支店コード AS 支店コード_支店コード
FROM 銀行コード INNER JOIN (支店コード INNER JOIN 社員口座管理テーブル ON
(支店コード.支店コード = 社員口座管理テーブル.支店コード)
AND (支店コード.銀行コード = 社員口座管理テーブル.銀行コード))
ON 銀行コード.銀行コード = 社員口座管理テーブル.銀行コード;
リレーションシップは
銀行マスター.銀行コード⇔社員口座管理テーブル.銀行コード(一対多)
支店マスター.銀行コード⇔社員口座管理テーブル.銀行コード(一対多)
支店マスター.支店コード⇔社員口座管理テーブル.支店コード(一対多)
以上になります。
恐らくクエリでエラーが起こっているのだと思いますが、どこをどう変えれば良いのか全く分からない状態です。
お手数ですが確認をお願い致します。
何か情報が不足していれば教えてください。
フォームの銀行コード、支店コードのコントロールソースが、銀行コード_銀行コード、支店コード_支店コード になってませんか。
それだと、フォーム上で、マスターテーブルにコードを追加することになり、すでにマスターにあるコードならそのようなエラーになります。
マスターのコードは不要なのでSQLは下記のようにして、
フォームの銀行コード、支店コードのコントロールソースは、社員口座管理テーブルの銀行コード、支店コードにしてください。マスターテーブルから、コード(主キー)以外で表示したいフィールドを追加してください。
コンボボックスを使えば、レコードソースにマスターテーブルを含める必要はないです。
下記が参考になるでしょう。
コードでも名称でも入力できるコンボボックス - hatena chips
hatena様
提示して頂いたサイトがとても参考になり使用いたしました。ありがとうございます。
銀行コードは上記のサイトで実装できたのですが、そこからさらに支店コードを絞り出す方法はありますでしょうか?
銀行コードと銀行名のコンボボックスを配置し
その下に支店コードと支店名のコンボボックスを配置。
銀行コードや銀行名を選ぶと、支店コードと支店名がその銀行の支店だけを絞り込みたいです。
質問にさらに質問をしてしまい大変申し訳ありませんが宜しくお願い致します。