我将后端MS 2003升级到数据库的MySQL 5.1 .我将后端MySQL5.1数据库thr‘ODBC (MySQL ODBC 5.1驱动程序)链接到MS前端.mdb。
我正在使用DAO记录集。我使用.AddNew方法添加新记录,并使用
.Update方法;在update语句之后,我将自动编号字段提取到变量中,这将
“运行时错误”-2147352567 (80020009)‘无当前记录’错误。
但是相同的代码在具有MS 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访问代码具有从后端链接到前端的访问权限.没有指定dbSeeChanges选项,在update语句之前,我可以获得自动编号字段的新ID。
发布于 2013-10-12 15:37:02
几年前,在将后端数据库从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 = Nothinghttps://stackoverflow.com/questions/19335043
复制相似问题