Microsoft Access 掲示板

オートナンバー値の途中が大きく抜けていた

2 コメント
views
4 フォロー

初心者です。部材発注・入荷処理のファイルを作成しています。
発注用テーブルはT発注Main(発注ID、日付、取引先等のフィールド)とT発注Sub(明細ID、品目、数量、価格、発注ID等のフィールド)があり発注IDで一対多のリレーションしてます。
発注入力は作成したフォームにて行っていまして発注Subの明細ID値は特に見ていませんでした。明細IDはオートナンバーです。
T発注Subの件数は3万件程なのですが、たまたま明細ID値を確認すると100万を超えてました。テーブルの明細IDを細かく見ると2万超えた辺りから急に100万台になってました(途中が大きく抜けてます)。
T発注Mainのレコードを削除することはありますが(Subも連鎖削除される)、そんなに沢山した記憶はありません。
データが破損したり消えたりはなさそうなのですが、不思議で仕方ありません。
何かテーブル構成がよくないのかなと思いまして投稿しました。

ビギナー
作成: 2024/06/26 (水) 12:24:11
通報 ...
1

明細IDはオートナンバーです。

T発注Subの件数は3万件程なのですが、たまたま明細ID値を確認すると100万を超えてました。テーブルの明細IDを細かく見ると2万超えた辺りから急に100万台になってました(途中が大きく抜けてます)。

T発注Mainのレコードを削除することはありますが(Subも連鎖削除される)、そんなに沢山した記憶はありません。

  • [T発注Sub]に100万件以上ものレコードが格納された事実はない。

  • 仮に100万件以上ものレコードが格納されていたとしても、およそ98万件ものレコードがまとめて削除された事実はない。

以上の 2 点を前提とした場合は、原因は「オートナンバー型のフィールドのシード値を変更させ得る操作」が行われたことぐらいしかないと思います。

例えば、[T発注Sub]の[明細ID]のシード値が20000である状態で、次のような追加クエリを実行して新規レコードを1件追加したとします。

INSERT INTO [T発注Sub] ([明細ID])
VALUES (1000000);

その後、[T発注Sub]をデータシートビューで開いて新規レコードを挿入した場合、そのレコードの[明細ID]の値は( 20000 でも 20001 でも 20002 でもなく) 1000001 となり、それ以降に挿入されるレコードについても 1 ずつインクリメントされていきます。
DAO や ADO を介して新規レコードの挿入が実行された場合も同様です。

とりあえず、上記のように「[T発注Sub]の新規レコードの[明細ID]に代入される値を明示的に指定している」追加クエリ、マクロ、プロシージャが存在しないかどうかをご確認されることをお奨めします。

もしそのような操作が実行された形跡も可能性もないのであれば、他の原因を疑われた方がよいでしょう。

2
ビギナー 2024/06/27 (木) 10:56:46 ddfe5@b96a9

skさんありがとうございます。これに関わる追加処理は現在ありませんので、以前色々処理させた時に間違った事があったと思います。様子みてみます。お世話になりました。