Microsoft Access 掲示板

追加クエリの実行について

2 コメント
views
4 フォロー

下記のコードを実行すると、

変換エラーのため、0個のフィールドのNullに設定しました。0件のレコードキー違反、0件のレコードでロック違反、327件のレコードで、入力規則違反が発生したためレコードを追加できませんでした。

主キーは、合成キーで、重複はしてません。
IDも主キーで、オートナンバー型です。

テーブルの作成しなおしで実行⇒改善無
テーブルのコピー実行⇒改善無

IDのみの追加を実行⇒同じエラーです。

フィールドの形式は、間違えていないと思います。

どんな原因が、考えられるのでしょうか?
お知恵をお貸しください。

よろしくお願いいたします


INSERT INTO MT_検索テーブル
 (
 ID, 
 親番, 
 売上先, 
 子番, 
 支店_営業所, 
 孫番, 
 現場名, 
 府県, 
 締日, 
 直近3ヶ月, 
 油種, 
 仕入, 
 売上, 
 利益, 
 仕入コード, 
 仕入先, 
 単価_ランク_コード, 
 単価_ランク, 
 [開始(復活)], 
 終了, 
 備考1, 
 備考2, 
 担当, 
 車番①, 
 車番②, 
 車番③, 
 車番④, 
 車番⑤, 
 車番⑥, 
 車番⑦, 
 車番⑧, 
 車番⑨, 
 売上先カナ, 
 支店_営業所カナ, 
 現場名カナ, 
 フラグ, 
 日付コード, 
 油種コード, 
 合成キー, 
 納入先業者名カナ, 
 親グループカナ, 
 更新用フラグ, 
 締め日, 
 更新合成キー, 
 最終編集日, 
 終了日, 
 終了チェック 
)
SELECT 
ID,
親番, 
売上先,
子番,
支店_営業所, 
孫番,
現場名,
府県, 
締日, DateAdd("m",1,[直近3ヶ月]) AS 日時,
油種, 
Null AS 仕入C, 
Null AS 売上C, 
Null AS 利益C, 
仕入コード,
仕入先,
単価_ランク_コード, 
単価_ランク,
[開始(復活)],
終了, 
備考1,
備考2,
担当,
車番①,
車番②,
車番③,
車番④,
車番⑤,
車番⑥,
車番⑦,
車番⑧,
車番⑨,
売上先カナ,
支店_営業所カナ,
現場名カナ,
[フラグ],
日付コード,
油種コード, 
[親番] & "-" & [子番] & "-" & [孫番] & "-" & [油種コード] & "-" & [仕入コード] & "-" & Format([日時],"yyyymmdd") AS 合成キー2, 
納入先業者名カナ,
親グループカナ, 
Year(Date()) & "年" & Month(Date()) & "月" & "レイアウト" AS 更新用,
 IIf(Day([日時])=1,DateSerial(Year([日時]),Month([日時])+1,0),DateAdd("m",1,[日時])+1) AS 締め日,
更新合成キー, 
最終編集日,
終了日, 
終了チェック
FROM MT_検索テーブル
WHERE (((MT_検索テーブル.終了チェック)=False) AND ((MT_検索テーブル.直近3ヶ月) Between DateSerial(Year(Date()),Month(Date())-1,1) And DateSerial(Year(Date()),Month(Date()),0)));

しん
作成: 2024/11/08 (金) 20:06:35
通報 ...
1

確認ですが、

主キーは、合成キーで、重複はしてません。
IDも主キーで、オートナンバー型です。

複数フィールドに主キーを設定しているのですか。
オートナンバーは重複しないので意味がないのでは?

ID(オートナンバー型)を主キーにして、合成キーはインデックス(重複なし)を設定するのが通常の設計だと思います。

また、追加クエリーにはオートナンバー型フィールドは含めないようにすべきだと思います。

2
しん 2024/11/11 (月) 09:58:09 f87c1@9fff4

hatena様

返信遅れて申し訳ありません。

仰る通り、下記のSQL文で解決しました。

回答ありがとうございました。


INSERT INTO MT_検索テーブル
(
 親番, 
 売上先, 
 子番, 
 支店_営業所, 
 孫番, 
 現場名, 
 府県, 
 締日, 
 直近3ヶ月, 
 油種, 
 仕入, 
 売上, 
 利益, 
 仕入コード, 
 仕入先, 
 単価_ランク_コード, 
 単価_ランク, 
 [開始(復活)], 
 終了, 
 備考1, 
 備考2, 
 担当, 
 車番①, 
 車番②, 
 車番③, 
 車番④, 
 車番⑤, 
 車番⑥, 
 車番⑦, 
 車番⑧, 
 車番⑨, 
 売上先カナ, 
 支店_営業所カナ, 
 現場名カナ, 
 フラグ, 
 日付コード, 
 油種コード, 
 合成キー, 
 納入先業者名カナ, 
 親グループカナ, 
 更新用フラグ, 
 締め日, 
 更新合成キー, 
 最終編集日, 
 終了日, 
 終了チェック 
)
SELECT 
親番, 
売上先,
子番,
支店_営業所, 
孫番,
現場名,
府県, 
締日, DateAdd("m",1,[直近3ヶ月]) AS 日時,
油種, 
Null AS 仕入C, 
Null AS 売上C, 
Null AS 利益C, 
仕入コード,
仕入先,
単価_ランク_コード, 
単価_ランク,
[開始(復活)],
終了, 
備考1,
備考2,
担当,
車番①,
車番②,
車番③,
車番④,
車番⑤,
車番⑥,
車番⑦,
車番⑧,
車番⑨,
売上先カナ,
支店_営業所カナ,
現場名カナ,
[フラグ],
日付コード,
油種コード, 
[親番] & "-" & [子番] & "-" & [孫番] & "-" & [油種コード] & "-" & [仕入コード] & "-" & Format([日時],"yyyymmdd") AS 合成キー2, 
納入先業者名カナ,
親グループカナ, 
Year(Date()) & "年" & Month(Date()) & "月" & "レイアウト" AS 更新用,
 IIf(Day([日時])=1,DateSerial(Year([日時]),Month([日時])+1,0),DateAdd("m",1,[日時])+1) AS 締め日,
更新合成キー, 
最終編集日,
終了日, 
終了チェック
FROM MT_検索テーブル
WHERE (((MT_検索テーブル.終了チェック)=False) AND ((MT_検索テーブル.直近3ヶ月) Between DateSerial(Year(Date()),Month(Date())-1,1) And DateSerial(Year(Date()),Month(Date()),0)));