オートナンバーの初期化するため調べた結果、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
とりあえずコードは下記に修正してみてください。
修正前のコードだとテーブル名やフィールド名に空白や記号が含まれるとエラーになる場合がありますので、その対策を追加しました。
それてもエラーになるなら、この関数を呼び出す前後のコードを提示してください。
アドバイスありがとうございます。
テストしてみましたがエラーのままでした。
マクロで以下のプロシージャの実行
オートナンバー型初期化("TEST3","ID")
※前後これ以外の処理はありません。
テーブルTEST3に定義しているフィールド名IDは以下の設定になっています。
データ型オートナンバー型
フィールドサイズ 長整数型
新規レコードの値 インクリメント
インデックス いいえ
文字配置 標準
ローカル変数のSQLは以下のようになっていました。
"Alter Table [TEST3] Alter Column [ID] Counter(1,1)"
どのコードでエラーはでますか。
当方のサンプルでの実験では問題なく実行できました。
私も同じエラーが出ます。
エラー番号3259
フィールドのデータ型が正しくありません。
▼実行したコード
currentdb.execute "ALTER TABLE inRecve ALTER COLUMN id COUNTER (1, 1)"
解決しました。
以下の関数で出来ました。
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