首页 > 文库大全 > 精品范文库 > 2号文库

关于在ExcelVBA中用Recordset对象访问更新ACCESS数据表运行时错误的小结

关于在ExcelVBA中用Recordset对象访问更新ACCESS数据表运行时错误的小结



第一篇:关于在ExcelVBA中用Recordset对象访问更新ACCESS数据表运行时错误的小结

关于在ExcelVBA中用Recordset对象访问更新ACCESS数据表产生实时错误'-2147217887(80040e21)'的小结

网上对于更新数据库表[运行时错误'-2147217887(80040e21)':多步操作产生错误。请检查每一步的状态值。或者:无法更新字段。]给出的几种解释:(1)字符串长度超过数据表预设限制;(2)数据类型不符;(3)无主键。还有一个是修改了游标类型解决问题的,但是我遇到的都不是这几种。

最近,为了维护单位的人事工资管理系统,需要将人员的学历信息先在一张Excel电子表中维护好,然后再在VBA中利用Recordset对象访问更新ACCESS数据表。由于先前的查询中为了避免“无效的NULL引用”,对查询字段都用iff(IsNull(),)来包裹。在后面的更新中,直接复制先前的语句来修改,保留了先前的iff(IsNull(),)包裹语句,这导致对Recordset查询结果的字段进行赋值以备更新时总是提示:

“运行时错误'-2147217887(80040e21)':多步操作产生错误。请检查每一步的状态值。”

头一天晚上在百度上查了一晚上也没有解决问题,排出字符串长度超过数据表预设限制,排出数据类型不符,也不是无主键的问题,„„第二天晚上再来:

这次,我改变了Recordset对象的打开方式,直接用Rse.Open SQL, cnn, adOpenStatic, adLockPessimistic打开要更新的结果集,提示依然在,但是有了改变:

“运行时错误'-2147217887(80040e21)':无法更新字段。”

错误代码还是一样的,就是释义变了,如图:

免不了又上百度搜索一番,但是也是无果而终,到底是什么原因呢?昨晚我曾把包裹“所学专业”字段的iff(IsNull(),)函数删除,但当时并未解决问题,今天,抱着试一试的想法,我把所有的iff(IsNull(),)包裹函数全部去除,„„,结果,通过!!

相关内容

热门阅读
随机推荐