【问题标题】:Change Access autonumber value更改访问自动编号值
【发布时间】:2020-07-23 01:25:24
【问题描述】:

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

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

我试图重置计数器

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

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

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

【问题讨论】:

    标签: sql ms-access auto-increment autonumber


    【解决方案1】:

    您可以使用 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 中允许使用负自动编号(自动编号字段始终签名),但如果不手动设置种子/设置它们/损坏,则永远不会发生

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2010-11-01
      • 1970-01-01
      • 2016-03-30
      • 2019-01-16
      相关资源
      最近更新 更多