首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时错误'-2147352567 (80020009)‘没有当前记录MySQL后端DAO记录集

问运行时错误'-2147352567 (80020009)‘没有当前记录MySQL后端DAO记录集
EN

Stack Overflow用户
提问于 2013-10-12 14:01:37
回答 1查看 1.6K关注 0票数 1

我将后端MS 2003升级到数据库的MySQL 5.1 .我将后端MySQL5.1数据库thr‘ODBC (MySQL ODBC 5.1驱动程序)链接到MS前端.mdb。

我正在使用DAO记录集。我使用.AddNew方法添加新记录,并使用

.Update方法;在update语句之后,我将自动编号字段提取到变量中,这将

“运行时错误”-2147352567 (80020009)‘无当前记录’错误。

但是相同的代码在具有MS 2003后端的早期版本中工作。

代码语言:javascript
复制
'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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-12 15:37:02

几年前,在将后端数据库从Access转移到MySQL (保持前端在Access中)之后,我遇到了同样的情况。最后,我使用了以下解决方法:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19335043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档