更改访问自动编号值

问题描述 投票:2回答:1

我有一个旧版Access数据库。其中的VB代码需要特殊记录,并在特定表中具有自动编号ID值1

所涉及的表具有主键作为自动编号。该列在其他表中也称为外键。这就是为什么我无法删除或修改表的主键的原因。

我尝试使用以下方法重置计数器

ALTER TABLE myTable ALTER COLUMN tId COUNTER(1,1)

但是它说我不能改变桌子。而且我无法手动设置列值。

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

sql ms-access auto-increment autonumber
1个回答
0
投票

您可以使用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

使用立即窗口调用它:

SetAutonumber "MyTable", "tId", 1

并且记得重置它:

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

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

INSERT INTO myTable (tId) VALUES(1)

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

还请注意:Access中允许使用否定的自动编号(自动编号字段始终经过签名),但如果不手动设置种子/设置它们/损坏,则永远不会出现]

© www.soinside.com 2019 - 2024. All rights reserved.