Microsoft Access 掲示板

オートナンバーの初期化について

5 コメント
views
4 フォロー

オートナンバーの初期化するため調べた結果、3種類方法があることが分かりました。
・テーブルを再作成
・テーブルを空にしてデータベースの最適化
・関数による初期化

アクセスのマクロで実施したく、関数による初期化を試しているのですが
エラー番号3259
フィールドのデータ型が正しくありません。
と出力されます。
オートナンバーの方はCounterだと思いますので理由が分からず。。。
アドバイスを頂ければ幸いです。

Function オートナンバー型初期化(テーブル As String, フィールド As String, Optional 初期値 = 1) As Boolean
    On Error GoTo エラー
    DoCmd.Close acTable, テーブル
    SQL = "Delete from " & テーブル
    CurrentDb.Execute SQL

    SQL = "Alter Table " & テーブル & " Alter Column " & フィールド & " Counter(" & 初期値 & ",1)"
    CurrentDb.Execute SQL
    オートナンバー型初期化 = True
    Exit Function
エラー:
    MsgBox Error, vbCritical, Format(Err, "エラー番号 0")
End Function

http://accessmyusql.blog.fc2.com/blog-entry-88.html

オートナンバー
作成: 2020/08/07 (金) 09:33:02
通報 ...
1

とりあえずコードは下記に修正してみてください。

Function オートナンバー型初期化(テーブル As String, フィールド As String, Optional 初期値 = 1) As Boolean
    On Error GoTo エラー
    DoCmd.Close acTable, テーブル
    Dim SQL AS String
    SQL = "Delete from " & テーブル
    CurrentDb.Execute SQL

    SQL = "Alter Table [" & テーブル & "] Alter Column [" & フィールド & "] Counter(" & 初期値 & ",1)"
    CurrentDb.Execute SQL
    オートナンバー型初期化 = True
    Exit Function
エラー:
    MsgBox Error, vbCritical, Format(Err, "エラー番号 0")
End Function

修正前のコードだとテーブル名やフィールド名に空白や記号が含まれるとエラーになる場合がありますので、その対策を追加しました。

それてもエラーになるなら、この関数を呼び出す前後のコードを提示してください。

2
オートナンバー 2020/08/08 (土) 18:52:53 3d629@e87f3 >> 1

アドバイスありがとうございます。
テストしてみましたがエラーのままでした。

マクロで以下のプロシージャの実行
オートナンバー型初期化("TEST3","ID")
※前後これ以外の処理はありません。

テーブルTEST3に定義しているフィールド名IDは以下の設定になっています。
データ型オートナンバー型
フィールドサイズ 長整数型
新規レコードの値 インクリメント
インデックス   いいえ
文字配置     標準

ローカル変数のSQLは以下のようになっていました。
"Alter Table [TEST3] Alter Column [ID] Counter(1,1)"

3

どのコードでエラーはでますか。

当方のサンプルでの実験では問題なく実行できました。

4
にこっと、、 2021/06/25 (金) 14:27:58 70584@0c3fa

私も同じエラーが出ます。

エラー番号3259
フィールドのデータ型が正しくありません。

▼実行したコード
currentdb.execute "ALTER TABLE inRecve ALTER COLUMN id COUNTER (1, 1)"

5
にこっと、、 2021/06/25 (金) 14:52:16 70584@0c3fa

解決しました。
以下の関数で出来ました。
Public Sub initalizeTables(tblName$)
    CurrentProject.Connection.Execute "DELETE FROM " & tblName$
    CurrentProject.Connection.Execute "ALTER TABLE " & tblName$ & " ALTER COLUMN id NUMBER"
    CurrentProject.Connection.Execute "ALTER TABLE " & tblName$ & " ALTER COLUMN id COUNTER (1, 1);"
End Sub

▼参考
sql - MS Access run-time error 3259 invalid field data type on alter table - Stack Overflow
https://stackoverflow.com/questions/22659444/ms-access-run-time-error-3259-invalid-field-data-type-on-alter-table/33188788