使用currentproject.connection获取insertID

我想获取最后一个插入查询的插入ID

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Set cn = CurrentProject.Connection

cn.Execute "Insert into Locations(locationName) Values('" & Me.location.Value & "')"

rs.Open "SELECT @@identity AS locationID FROM locations",cn

Debug.Print rs.Fields("locationID")

但是,它总是返回0。有没有办法使用ADO连接获取insertID?

Edit1:

借助下面的回复和进一步的研究,我发现了灵魂

我忘了提到我的后端数据库是mysql数据库,而不是MSSQL或access。我还更改了代码以现在使用名为g_cn的全局连接。我认为currentproject.connection不适用于后端mysql数据库来获取insertID,因为它使用DAO连接。

我通过以下操作设置了全局连接:

g_cn.Open "DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=" & gc_devserverName & ";Database=" & gc_DevDBName & ";Uid=" & gc_DevUser & ";Pwd=" & gc_DevPassword & ";Option=3;"

我现在可以使用ADO。所以我的代码改为:

Dim rs As New ADODB.Recordset
rs.Open "Insert into Locations(locationName) Values('" & Me.location.Value & "')",g_cn
rs.Open "Select LAST_INSERT_ID() as last from locations;",g_cn
Debug.Print rs.Fields("last")
rs.Close
MAODAN2536 回答:使用currentproject.connection获取insertID

SELECT @@identity是Access中的特殊查询。您不能将其与FROM子句一起使用。删除它,查询将起作用:

rs.Open "SELECT @@identity AS locationID",cn
本文链接:https://www.f2er.com/3130401.html

大家都在问