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引用
顶楼主:lol 改了为啥还是不行:( lalala_Fm 发表于 2021-2-19 11:09
**** 作者被禁止或删除 内容自动屏蔽 ****
返回设false
页:
[1]