🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1326閲覧

access フォームからデータを登録しようとするとエラーが出てしまう。

zerobemy

総合スコア14

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/02/02 04:40

編集2021/02/02 23:42

お世話になっております。

社員の口座を管理するためのフォームを作成しました。
そのフォームは閲覧、編集、登録ができます。
いざ社員の口座を登録しようとすると、「インデックス、主キー、またはリレーションシップで重複される値があるため・・・または重複する値を使用できるように再定義してください」と出ます。

テーブル構成は、
☆銀行コードマスタ
銀行コード:数値型(主キー、重複なし)
銀行名:テキスト型
銀行名_カナ:テキスト型

☆支店コードマスタ
支店コード:数値型(主キー、重複あり)
支店名:テキスト型
支店名_カナ:テキスト型
銀行コード:数値型(主キー、重複あり)

☆社員口座管理テーブル
社員番号:数値型
銀行名:テキスト型
銀行コード:数値型
支店名:テキスト型
支店コード:数値型
口座番号:数値型
口座名義:テキスト型

☆口座登録フォーム
SQL

SELECT 社員口座管理テーブル.*, 銀行コードマスタ.銀行コード, 支店コードマスタ.支店コード FROM 銀行コードマスタ INNER JOIN (支店コードマスタ INNER JOIN 社員口座管理テーブル ON (支店コードマスタ.支店コード = 社員口座管理テーブル.支店コード) AND (支店コードマスタ.銀行コード = 社員口座管理テーブル.銀行コード)) ON 銀行コードマスタ.銀行コード = 社員口座管理テーブル.銀行コード;

リレーションシップは
銀行マスター.銀行コード⇔社員口座管理テーブル.銀行コード(一対多)
支店マスター.銀行コード⇔社員口座管理テーブル.銀行コード(一対多)
支店マスター.支店コード⇔社員口座管理テーブル.支店コード(一対多)

以上になります。

恐らくクエリでエラーが起こっているのだと思いますが、どこをどう変えれば良いのか全く分からない状態です。
お手数ですが確認をお願い致します。

何か情報が不足していれば教えてください。

【追記】
イメージ説明
口座登録フォームは上記のような設計にしたいと思っています。
振込先銀行というコンボとテキストボックスには銀行コードマスタからでデータを呼びだし、
込先支店というコンボとテキストボックスには支店コードマスタからデータを呼びだしたいです。

銀行コードマスタと支店コードマスタにはそれぞれある程度の銀行と支店のデータを格納しております。
社員口座管理テーブルの銀行コードと支店コードはあくまでもその社員の口座情報になりますのでマスタとは別物になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

提示しているSQLはレコードソースなのだと思いますが、「支店コードマスタ」が「重複あり」となっているためのエラーだと思います。
内容的には「支店コードマスタ.支店コード」は「社員口座管理テーブル」のコードを使用すれば良いので、SQLから「支店コードマスタ」の結合を外せば更新できるようになると思います。
できれば、銀行コードマスタもSQLから外しておいた方が良い気がしますが。

投稿2021/02/02 11:23

編集2021/02/02 11:24
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zerobemy

2021/02/02 23:50

sazi様 回答ありがとうございます。 支店コードマスタを結合から外すと、氏名や銀行コードなど同じものがずらーと並び支店コードだけが違うという変なデータになってしまいました。。 情報が不足していると思い質問に追記しましたので確認お願い致します。
sazi

2021/02/03 00:08 編集

それは振込先支店のコンボボックスの話ですよね。 連結列を「社員口座管理テーブル.支店コード」にして下さい。(値集合ソースの条件は振込先銀行になっている前提) 振込先銀行も同様に連結列を「社員口座管理テーブル.銀行コード」にして、銀行コードマスタもSQLから外してみてください。
zerobemy

2021/02/03 02:06

sazi様 回答ありがとうございます。 連結列とはコンボボックスで設定するもので良いのでしょうか? 連結列を社員口座管理テーブル.支店コードとすると「このフィールドに入力した値が正しくありません」と出てしまいます・・・ 知識不足で初心者のような質問をしてしまい本当に申し訳ありませんが宜しくお願い致します。
sazi

2021/02/03 08:24

連結列ではなく、「コントロールソース」でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問