6

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

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

但是它给 col 一个值 0 而不是新生成的自动编号。知道为什么吗?或者另一种方法来做到这一点?

4

1 回答 1

3

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

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

Debug.Print "most recent autonumber: " & _
    conn.Execute("SELECT @@Identity")(0)
于 2013-07-29T18:15:38.423 回答