ms-access - 检索 Access 表的下一个自动编号

标签 ms-access vb6

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

我知道可以通过使用SHOW TABLE STATUS命令在MySQL中轻松完成此操作。是否有什么可以让我使用ADO,DAO,VB6或任何其他可用工具对Access/JET进行完全相同的操作?

最佳答案

您可以使用ADOX(用于DDL和安全性的Microsoft ADO扩展)来确定自动编号字段的当前“种子”值。

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

请注意,这种方法在多用户情况下可能会产生错误的结果……如果另一个用户可以在检索下一个自动编号与实际执行INSERT的时间之间潜行INSERT。如果很关键,可以通过在SELECT @@Identity之后检查INSERT来验证是否获得了期望的值。

关于ms-access - 检索 Access 表的下一个自动编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498221/

相关文章:

ms-access - Access VBA 能否区分在组合框中键入内容和从下拉列表中选择之间的区别?

ms-access - MS Access 中的 .ImportXML 命令出错

vb6 - 工具提示仅在从源代码运行时显示

vb6 - VB6 中的字节数组到有符号整数

dom - 使用 InternetExplorer.Application 对象检查网页上的复选框

ms-access - 如何在 vba 中使用字符串创建日期?

ms-access - MS Access 后端位于慢速网络驱动器上

database - 什么是 Access _be 和 _bp 文件以及它们如何链接在一起?

VB6中的正则表达式?

visual-c++ - 想要改进 VB6 Watch 屏幕上组件的调试