使用@@ Identity

use*_*908 5 sql ms-access vba ms-access-2007 access-vba

我想知道如何从另一个数据库中的表中获取最近生成的自动编号值.目前我这样做:

Do Until rsA.EOF
    'Inserts new row here (works)
    Set rs = New ADODB.Recordset 
    rs.Open "SELECT @@Identity" (Connection info)
    SQLcmd = "UPDATE tbl SET col = " & rs("SELECT @@Identity").Value & " 
    (WHERE statement);"
    DoCmd.RunSQL SQLcmd
    rsA.MoveNext
Loop
Run Code Online (Sandbox Code Playgroud)

但它给col的值为0而不是新生成的自动编号.知道为什么吗?或者另一种方法呢?

Han*_*sUp 3

INSERT您没有显示执行其他数据库操作的代码。如果您使用ExecuteADO Connection 对象的方法来执行此操作,请SELECT @@Identity同一连接对象运行查询...而不是具有相同连接字符串的新连接。 @@Identity只能在同一个连接会话中使用;否则你会得到0。

实际上,您甚至不需要记录集来捕获该值。如果您的连接对象名为named conn,这将返回一个记录集,但您不需要将其分配给记录集对象变量。只需询问返回记录集中的第一项即可。

Debug.Print "most recent autonumber: " & _
    conn.Execute("SELECT @@Identity")(0)
Run Code Online (Sandbox Code Playgroud)