我将后端MS Access 2003升级到数据库的MySQL 5.1。 我将后端MYSQL 5.1数据库thr'ODBC(MySQL ODBC 5.1驱动程序)链接到MS Access前端.mdb。
我正在使用DAO记录集。我使用.AddNew方法添加新记录并使用
进行更新。更新方法;在更新语句之后,我将自动编号字段提取到变量中,该变量给出了
“运行时错误”-2147352567(80020009)“无当前记录”错误。
但是同样的代码适用于以前的MS-Access 2003后端版本。
'new
if bNew = true then
lngInvoiceID = 0
else 'edit ,
lngInvoiceID = Forms("frmInvoice").[tbInvoiceID].value
end if
Set rstAux = dbsLocal.OpenRecordset("Select * from tblElectronicInvoices where
eipID = " & lngInvoiceID, dbOpenDynaset, dbSeeChanges)
rstAux.AddNew
rstAux.Update
lngInvoiceID = Nz(rstAux.Fields("eipID"), 0)
'当我尝试恢复自动编号字段的eipID时,没有当前记录错误。
以前的MS Access代码具有访问后端链接表到前端的权限。未指定dbSeeChanges的选项,在更新语句之前,我可以获取自动编号字段的新ID。
答案 0 :(得分:1)
几年前,我将后端数据库从Access迁移到MySQL(在Access中保留前端)后遇到了同样的情况。我使用以下解决方法结束了:
Dim cdb As DAO.Database, qdf As DAO.QueryDef, rst As DAO.Recordset
Dim lngCustomerID As Long
Set cdb = CurrentDb
' create pass-through query to insert new row and then retrieve the IDENTITY value
Set qdf = cdb.CreateQueryDef("")
qdf.Connect = cdb.TableDefs("customers").Connect ' get .Connect from existing linked table
qdf.ReturnsRecords = False
qdf.SQL = "INSERT INTO customers (customerName) VALUES ('GordCo')"
qdf.Execute
qdf.ReturnsRecords = True
qdf.SQL = "SELECT LAST_INSERT_ID()"
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
lngCustomerID = rst(0).Value
Debug.Print "LAST_INSERT_ID() returned " & lngCustomerID
rst.Close
Set rst = Nothing
Set qdf = Nothing