我想获得最后一个插入查询的插入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?
第1版:
在下面的回复和进一步研究的帮助下,我找到了的灵魂
我忘了提到我的后端数据库是mysql数据库,而不是MSSQL或Access。我还更改了代码,现在使用名为g_cn
的全局连接。我认为currentproject.connection
不能与后端mysql数据库一起获得insertionID,因为它使用了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
SELECT @@identity
是Access中的一个特殊查询。不能将它与FROM
子句一起使用。删除它,查询将工作:
rs.Open "SELECT @@identity AS locationID", cn