检索下一个AutoNumber for Access表

Dan*_*lfe 4 vb6 ms-access

我在Microsoft Access/JET中有一个表,其中有一个自动设置的字段,该字段以增量方式设置,用作表的主键.我需要知道主键的值对于下一个插入的记录是什么,但我需要知道插入记录之前的值.使用SELECT MAX([ID]) + 1 FROM [TableName];将不起作用,因为记录通常从表的末尾删除.(插入新记录只是为了找出值也不是一种选择.)

我知道这可以通过使用SHOW TABLE STATUS命令在MySQL中轻松完成.是否有任何东西可以让我使用ADO,DAO,VB6或任何其他可用工具为Access/JET做同样的事情?

Han*_*sUp 7

您可以使用ADOX(Microsoft ADO Extensions for DDL和Security)来确定自动编号字段的当前"种子"值.

Public Function NextAutonumber(ByVal pTable As String, _
        ByVal pAutonumField As String) As Long

    Dim cat As Object
    Set cat = CreateObject("ADOX.Catalog")
    Set cat.ActiveConnection = CurrentProject.Connection
    NextAutonumber = cat.Tables(pTable).Columns(pAutonumField).Properties("Seed")
    Set cat = Nothing
End Function
Run Code Online (Sandbox Code Playgroud)

请注意,这种方法可能会在多用户情况下给出错误的结果...如果另一个用户可以INSERT在您检索下一个自动编号和实际执行操作之间潜入INSERT.如果它很关键,你可以通过检查SELECT @@Identity后验证你是否得到了你期望的值INSERT.