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而不是新生成的自动编号.知道为什么吗?或者另一种方法呢?
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)