石鑫华视觉 发表于 2020-5-11 15:49:58

LabSQL错误-2146824584发生于 ADO Recordset GetString.vi:Exception occured in ADODB.Recordset: 对象关闭时,不允许操作

最后在用LabSQL操作MYSQL数据库,做成了状态机的形式,可是在操作时发现,想打开一次,多次执行时,总是会出错,错误如下:

错误-2146824584发生于 ADO Recordset GetString.vi->SQL Fetch Data (GetString).vi->SQL Execute.vi->MySQL-状态机.vi->Main.vi中的Exception occured in ADODB.Recordset: 对象关闭时,不允许操作。Help Path is C:\Windows\HELP\ADO270.CHM and context 1240653

该错误代码未定义。出现未定义错误可能有多种原因。例如,代码说明不存在,或者连线输入的数值并非对应于错误输入的错误代码。

此外,出现未定义错误代码的原因还可能是该错误与操作系统或ActiveX之类的第三方对象相关。对于这类第三方错误,可通过对错误代码(-2146824584)或其十六进制表示(0x800A0E78)进行Web搜索得到错误说明。


这个错误的意思就是,SQL Execute.vi函数中的ADO Recordset GetString.vi子函数的对象关闭了,不再允许操作。可是我们在状态机里,只打开了一次,还没有执行关闭动作。认真查看了一下里面的函数,发现ADO Recordset Destroy.vi函数是在是否获取数据的外面。如下图所示:这

需要执行获取数据集时(一般如select语句),ADO Connection Execute.vi返回了Recordset数据集引用,这时执行了获取数据后,再关闭Recordset的引用,是正常的。


但是在不返回数据时(如update/delete/inset等语句,是不返回数据的),ADO Connection Execute.vi函数本身是不返回Recordset数据集引用的,这时再关闭Recordset引用,则会产生错误。所以,这里不返回数据时,是不需要关闭Recordset的,也就是要把ADO Recordset Destroy.vi函数放到条件结构的真(返回数据里去),只有当要返回数据时,才关闭Recordset引用。修改的函数如下:

需要返回数据时,则关闭Recordset

不返回数据,则不关闭Recordset引用

allen.zhu 发表于 2020-5-16 21:15:43

顶楼主:lol

lalala_Fm 发表于 2021-2-19 11:09:52

改了为啥还是不行:(

cmbd 发表于 2021-12-12 21:12:56

lalala_Fm 发表于 2021-2-19 11:09
**** 作者被禁止或删除 内容自动屏蔽 ****

返回设false
页: [1]
查看完整版本: LabSQL错误-2146824584发生于 ADO Recordset GetString.vi:Exception occured in ADODB.Recordset: 对象关闭时,不允许操作

LabVIEW HALCON图像处理入门教程(24.09)
石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24