次に割り振られるオートナンバーの値を変更する

Accessにはオートナンバーと呼ばれる項目型があります。

これは、レコード追加するとシステムが自動で連番を割り振ってくれるありがたい機能ですが、

データのインポート等で、次に割り振られる番号が現在の最大値の次番号ではなく、途中の番号となってしまうことがあります。

この状態になってしまうと、すでに使われている番号を自動で割り振ろうとした際にキーの重複エラーとなってしまいます。

(オートナンバー型の項目に主キーもしくは一意のインデックスが設定されている場合)

これを解消するには、すでに使われている番号の最大値を取得して、

VBAで追加クエリーを実行すると次回からは最大値の次の番号から割り振られるようになります。

例えば、[M_顧客]テーブル(主キーは顧客ID、オートナンバー、顧客IDの最大値100)のテーブルの場合

CurrentDb.Execute "INSERT INTO M_顧客(顧客ID) VALUES (100)"

のように実行します。

VBAから実行した場合、このSQLの主キー重複エラーは無視され、次は101から割り振られるようになります。

あるいは、次のように記述すると、最大値を自動で取得して次のオートナンバーの値として再設定します。

lc_max = DMax("顧客ID", "M_顧客")
 lc_sql = "insert into M_顧客(顧客ID) values (" & lc_max & ")"
 CurrentDb.Execute lc_sql

 

 

 

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる