我曾遇到一个很相似的问题。 当adoquery的记录集为空时,不允许执行close方法。例: with adoquery1 do close; sql.clear; add('select * from a where 2=1') end; 这段代码执行第一遍没问题,但接着再执行时close方法会出错,原因我不知道。布置你遇到的是不是同样的问题。
eagle123(孤独的鹰) :我的问题正是像你所说一样,你解决了吗? 真得很奇怪!
apusic(大象):with G_dm.QryTemp do 中 G_dm.QryTemp 是什么呀,是TQuery吗?
if not Assigned(G_dm) then begin ShowMessage('资源没有分配,真是不好玩'); Exit; end; with G_dm.QryTemp do begin close; //其实是这句出错! sql.Clear; ===>运行到此时出错。 sql.Add('select c_Name, N_SerPay from serviceItems '); sql.Add('where c_ID=:cID'); prepare; parambyName('cID').asstring := cardno; open;
再者,你的程序里还有其它的QUERY吗?
再新加一个,试一试;
前面的数据库连接出错了吧!
parambyName('cID').value := cardno;
你改一下试一试?
呵呵,好像我有点文不对题啊!
你换成sql.text:=...;还会报告sql.text:=...;有错的。
再新加一个,试一试
如果正确的话,则检查它所连接的数据库的表或字段是否修改过了?或者QryTemp的静态字段是否和table的字段相符合。
当adoquery的记录集为空时,不允许执行close方法。例:
with adoquery1 do
close;
sql.clear;
add('select * from a where 2=1')
end;
这段代码执行第一遍没问题,但接着再执行时close方法会出错,原因我不知道。布置你遇到的是不是同样的问题。
真得很奇怪!
delphi中的ado本身是有bug的。你程序中的问题
就是一个bug。去找个地方下载一个ado的补丁吧。
已经很多人遇到这样的问题了。
ShowMessage('资源没有分配,真是不好玩');
Exit;
end; with G_dm.QryTemp do
begin
close; //其实是这句出错!
sql.Clear; ===>运行到此时出错。
sql.Add('select c_Name, N_SerPay from serviceItems ');
sql.Add('where c_ID=:cID');
prepare;
parambyName('cID').asstring := cardno;
open;