去掉prepared, 你这个地方不需要用prepared的,或者用了以后
用unprepared.
data.ADOchildtree.active:=false;
data.ADOchildtree.SQL.clear;
data.ADOchildtree.SQL.Add('select * from userpass where fname=:fname');
data.ADOchildtree.Parameters.ParamByName('fname').value:=fname;
data.ADOchildtree.Active:=true;
用unprepared.
data.ADOchildtree.active:=false;
data.ADOchildtree.SQL.clear;
data.ADOchildtree.SQL.Add('select * from userpass where fname=:fname');
data.ADOchildtree.Parameters.ParamByName('fname').value:=fname;
data.ADOchildtree.Active:=true;
写错了吧?
我试过你的办法了,还是报错,与原来一样的,
与 prepared这个方法没什么关系
确实写错了,应该是:DATA.adochildtree.sql.clear;
但是改过之后仍然是原来的错误,
然后 q1.close;
q1.SQL.clear;
q1.sql.Add('select * from country where name=:test');
q1.Parameters.ParamByName('test').Value:='Brazil1';
q1.open;我试验过了,用的是delphi带的测试mdb 没问题的。
adochildtree是tadoquery么?
adochildtree是Tadoquery我的程序如果每次查询不为空的话则不会报错
如果有一次查询结果为空,则第二次调用时在 close一句报错
begin
data.ADOchildtree.Close;
data.ADOchildtree.SQL.Create;
data.ADOchildtree.SQL.Add('select * from userpass where fname=:fname');
data.ADOchildtree.Parameters.ParamByName('fname').value:=fname;
data.ADOchildtree.Prepared;
data.ADOchildtree.Open;
if data.ADOchildtree.recordcount=0 then exit;//加这句试试
end;
试了你的方法,不行;
TO:ll7777(阿皓) ( )
请问是什么补丁?在那里有下载?TO: hamzsy(十二真空间)
错误信息:Either Bof or Eof is true,or the current record has been deleted, Requested operdation requires a current record
调用该函数的代码应该没有错,因为如果查询结果不为空的话就执行很正常的,我估计可能是因为Tadoquery查询返回为空的情况下需要调用一个什么方法将Tadoquery复位,否则就会报错,