更改访问自动编号值

Change Access autonumber value

我有一个遗留的 Access 数据库。其中的VB代码需要在特定的table.

中自动编号ID值为1的特殊记录

有问题的 table 有一个主键作为自动编号。该列也在其他 table 中作为外键引用。这就是为什么我无法删除或修改 table.

的主键

我尝试用

重置计数器
ALTER TABLE myTable ALTER COLUMN tId COUNTER(1,1)

但是它说我无法更改 table。而且我无法手动设置列值。

如何将特定值放入现有的主键自动编号列中?

您可以使用 ADOX 更改 Access 中自动编号字段的种子:

Public Sub SetAutonumber(TableName As String, ColumnName As String, Seed As Long)
    Dim c As Object 'ADOX.Catalog
    Set c = CreateObject("ADOX.Catalog")
    Set c.ActiveConnection = CurrentProject.Connection
    c.Tables(TableName).Columns(ColumnName).Properties("Seed") = Seed
End Sub

使用立即数调用它 window:

SetAutonumber "MyTable", "tId", 1

记得重置它:

SetAutonumber "MyTable", "tId", DMAX("tId", "MyTable") + 1

不过请注意,Access 允许插入自动编号字段。它仅通过 GUI 是只读的,但允许查询和 VBA 更改它。

INSERT INTO myTable (tId) VALUES(1)

这可能会绕过设置然后重置种子的需要。

另请注意:Access 中允许使用负自动编号(自动编号字段始终有符号),但如果不手动设置 seed/setting them/corruption

,则不会出现