コピペでOK!AccessVBAでオートナンバーをリセット(初期化)する方法

簡易的なシステムを構築する際は、Accessのオートナンバー機能を使って、自動的に連番を採番できるため便利ですよね。

ところが、連番を1から振り直したい場合には、オートナンバーをリセット(初期化)する必要があります。

手動でのリセット(初期化)は簡単にできたのですが、AccessのVBAを使って自動的にリセット(初期化)をする方法で意外とハマりましたので、対処方法・解決策をメモします。

関数を作成しましたので、コピーしてご利用ください。

Sponsored Link

手動でリセット(初期化)する方法

まずは、手動でリセット(初期化)する方法を簡単に紹介します。

この方法は、ググってみると多くの情報がヒットしましたので、ほとんどの方が知っているかもしれません。

テーブルのレコードを全て削除した後に、Accessを最適化

これだけですね。

まぁ、デバッグ時なんかはこれでもよいかもしれませんが、自動化システムとしては使い物になりませんよね。

ということで、いろいろと調べた結果、VBAでDAOを使ってオートナンバーを初期化できることが判明しましたので、実装方法をご紹介します。

自動でリセット(初期化)する方法

VBAでオートナンバーをリセットする関数

「strTableNameにテーブル名」を「strFieldNameにカラム名(オートナンバー)」を渡して、関数を実行するだけでOKです。

' オートナンバーリセット
Private Sub AutoNumberReset(ByVal strTableName As String, ByVal strFieldName As String)

    Dim db As DAO.Database
    Dim strSQL As String
    
    Set db = CurrentDb
    strSQL = "ALTER TABLE " & strTableName & " ALTER COLUMN " & strFieldName & " COUNTER (1,1)"

    db.Execute strSQL
    
End Sub

処理の流れ

以下の流れで、コードを記述してください。

  1. テーブルのレコード削除
  2. AutoNumberReset関数実行
  3. テーブルにレコード追記

例えば、

①VBAで削除クエリを実行して、テーブルのレコードを全て削除した後、②AutoNumberReset関数を使って、オートナンバーをリセットし、③追加クエリを実行してテーブルにレコードを追加する(このときオートナンバーは1から採番される)

ような使い方が想定されますね。

まとめ

前項で紹介した関数を使用すれば、簡単にオートナンバーをリセット(初期化)することが可能ですので、簡易的な自動化システムを構築するときは、とても便利です。

ぜひ使ってみてくださいね。

Sponsored Link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする