PR

オートナンバーが飛ぶ理由と防止策|Access初心者にもわかる安心ガイド

Access
スポンサーリンク

こんにちは、なかぜんです。
Accessを使っていて「オートナンバーの値が急に飛んだ!」と驚いたことはありませんか?
「連番にしたいのに、番号が10ずつ飛んでる…」「途中で100番台に進んでしまった…」そんな悩み、よく聞きます。

今回は、オートナンバーが飛ぶ理由と、それを防ぐ対策について、初心者の方にもわかりやすく解説します。
この記事を読むことで、トラブルの原因を理解し、実務でも安心してオートナンバーを使えるようになりますよ。

スポンサーリンク

そもそもオートナンバーとは?

オートナンバーは、Accessのテーブルで主キーとしてよく使われる「自動採番」機能です。
新しいレコードが追加されるたびに、1ずつ自動で増える便利な機能です。

用途の例

  • 顧客ID
  • 注文番号
  • 伝票番号

一見便利そうなこの機能ですが、実は「番号が飛ぶ」ことがあり、それが困りごとの元になるのです。

オートナンバーが飛んでしまう主な原因

1. キャンセルされた追加操作

Accessはレコードを追加しようとした瞬間に、仮でオートナンバーの値を予約します。
そのあと、ユーザーが保存せずにキャンセルした場合でも、その予約番号は戻されません。

2. クエリやVBAでの未完了追加

AppendクエリやVBAで.AddNewを使った場合も、途中で処理が中断されると、番号だけが消費されてしまいます。

3. データの削除

レコードを削除しても、オートナンバーはリセットされません。
たとえば100件目を削除しても、次は101から始まります。

実際のコード例:VBAでの影響

以下は、新規レコードを追加してキャンセルした例です。


Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_顧客", dbOpenDynaset)

rs.AddNew
rs!顧客名 = "テスト顧客"
' ここで何らかの理由でキャンセル
rs.CancelUpdate

rs.Close
Set rs = Nothing

解説:このコードでは、AddNewでレコード追加処理を開始し、CancelUpdateで取り消しています。
この時点で、オートナンバーは1件分「消費」されてしまいます。

対策:オートナンバーを飛ばさない工夫

1. 必要なときだけ追加する

フォームやVBAでは、AddNewの前に「本当に追加するか?」を確認するロジックを入れると安心です。

2. テストデータと本番を分ける

テスト時に番号が飛ぶことがあるので、本番前にオートナンバーを初期化するのもひとつの方法です。

3. オートナンバーに依存しすぎない

見た目の連番を求める場合は、自前で連番を管理する方が適しています。たとえば、日付+連番など。

注意点とよくあるミス

  • 番号が飛んだことを気にして、オートナンバーを勝手に手入力しようとする(※これはNG)
  • 番号が飛んでいても一意性は守られているので、実害がなければ放置でもOK
  • 途中でオートナンバーをリセットしたくなる → 既存データに影響が出るため注意!

応用ポイント:独自の採番システムを作る

業務で「きれいな連番が必要」な場合は、VBAを使って独自の番号を発番しましょう。


Function GetNext番号() As Long
  Dim rs As DAO.Recordset
  Set rs = CurrentDb.OpenRecordset("SELECT MAX(連番) AS 最大値 FROM T_注文")

  If IsNull(rs!最大値) Then
    GetNext番号 = 1
  Else
    GetNext番号 = rs!最大値 + 1
  End If

  rs.Close
  Set rs = Nothing
End Function

この関数は、現在の最大番号に1を加えた値を返します。
これを使えば、見た目の連番もきれいに保てます。

まとめ:オートナンバーと上手に付き合おう

今回は、オートナンバーが飛んでしまう原因とその対策を紹介しました。

  • オートナンバーは内部的に先に予約されるため、キャンセルでも番号が飛ぶ
  • 見た目の連番を重視したいなら、自前で連番を作る方法が有効
  • 実務では、番号の「見た目」より「一意性(ユニークさ)」が重要

Access初心者の方も、「あ、こういうことだったのか!」と理解が深まったのではないでしょうか?
次は、「自動採番のVBAテクニック」にチャレンジしてみるのもおすすめです!

それでは、またお会いしましょう。
なかぜんでした!

楽天Kobo電子書籍ストア
¥2,838 (2025/05/04 17:35時点 | 楽天市場調べ)
\楽天ポイント4倍セール!/
楽天市場
\商品券4%還元!/
Yahooショッピング