老革命遇见新问题,adoquery的问题,请大家过来看看 找管家婆进销存下载
‘cannot perform this operation on a closed dataset’
试了多种方法,不知道为什么
2楼: 没有代码,没办法帮你分析 如管家婆进销存破解版
3楼: 该信息 的意思是:不能在一个关闭的数据上执行此操作。关上查询试试。
4楼: 跟踪N久,没有发现关闭adoquery的地方,不知道什么问题,在同一事件中打开、操作此adoquery都没有问题,但一旦在其它的事件中操作,就报此错误,大家有没有遇到这个问题
5楼: 监控adoquery.active,表示一直处于激活状态,但一操作就报错,有点晕了
6楼: 肯定是那里吧数据集关掉了!
记账软件版7楼: 肯定没有,一直在监视,显示一直为true
8楼: 有总有人遇到一样的问题呀,探讨一下
9楼: 一直在监视
怎么监视的?
在源码里搜一下这个adoquery,看看哪里对它操作了,还有包含它的函数看看哪里调用了
10楼: 是不是哪里操作系统设置的问题,端口什么的
11楼: 如果是在FORM1上调用FORM2的adoquery,但FORM1又存在adoquery,结果没想到调用了FORM1上的adoquery....结果就那样了
楼主不妨把adoquery改个名字看看
12楼: 代码贴上吧 如分销
13楼: 谢谢,我一直在监视adoquery.active的值,一直为true,凡是在其它窗体内操作这个adoquery的地方我都做了断点,并没有执行到,莫名奇妙的问题,我以经快要疯掉了
记账软件版14楼: 有人在吗,帮帮忙呀
15楼: 还有一个原因,我曾经出现过,当ADOConnection的Connected意外变为False时,AdoQuery就自动Close了,所以,你最好去检查一下有没有什么代码对ADOConnection做了处理
16楼: 肯定是那里吧数据集关掉了! !
17楼: 在D5中遇到过这个问题,打死也查不出原因,后来打了补丁就OK了。
18楼: to jettop:
什么补丁?
一切可能的原因我都试过了,真是没有办法了,连ado我都重装过了
19楼: D5不是有ADO补丁吗?我不知道你是用D?
20楼: 如果不是ADO本身的BUG,则可能是ADOQUERY真的关闭了。在复杂的应用中会有可能在别的地方关了它,只是你没有找到而已。建议在操作前加
if not adoquery1.active then adoquery1.open 试试看,若能成功则adoquery是显示地关了,不关BUG事。若还不行则让上帝保佑你吧。
记账软件版21楼: 已经在操作之前做断点,确定active为true,但一操作就出现这个问题,我快要疯了
ADO已经是2.8了,不知道什么问题
22楼: 你最好好相关代码贴上来看看 如管家婆进销存下载
23楼: 帮你顶,最好有相关代码
24楼: //在这查看quyMain1.active还为true,但一执行就报错
整个代码里面没有关闭数据集的语句
if quyMain1.Locate(''使用选项'', ''业主信息登记'', [loCaseInsensitive]) then begin
List_GLB := ListView1.Items.Add;
List_GLB.Caption := ''业主信息登记'';
List_GLB.ImageIndex := 6;
end
else begin
List_GLB := ListView1.Items.Add;
List_GLB.Caption := ''业主信息登记 [禁用]'';
List_GLB.ImageIndex := 6;
end;
25楼: 你Locate(?,?)用英文试试,也许是汉字操作有问题,我原来碰到clientdataset的汉字搜索就有问题,或者后面的区分大小写选项不用
26楼: 但相同的代码,在第一次执行时就没有问题呀
27楼: 那你跟踪到哪一行的时候出错
记账软件版28楼: OK,问题已经解决了,现在分赃
29楼: 谢谢各位,解决了,现在分赃