ADOQuery不能复合查询(简单问题)(50分)

  • 主题发起人 主题发起人 youngyu
  • 开始时间 开始时间
Y

youngyu

Unregistered / Unconfirmed
GUEST, unregistred user!
二个问题请教:
1、UnPrepare不能用 ([Error] txm1.pas(38): Undeclared identifier: 'UnPrepare');
2、ADOQuery不能复合查询,如下提示。

with ADOQuery1 do
begin
Close;
{UnPrepare;} //第一处错。
sql.clear;
sql.add('select * ');
sql.add('from orndbf ');
{ sql.add('where kh=:Kh1 and date=(select max(date) from orndbf where kh=:kh1)');} //这一句不能用,下一句可以
sql.add('where kh=:Kh1');
parameters.ParamByName('Kh1').value:='20861';
{Prepare;}
open;
end;
 
sql.add('where kh=:Kh1 and date=(select max(date) from orndbf where kh=:kh1)')
改成
sql.add('where (kh=:Kh1) and (date=(select max(date) from orndbf where kh=:kh1))')
试试?
 
TO 风中的狼:
不行,可执行,但无结果,与不加()一样。
 
不要用同一个参数:
sql.add('where kh=:Kh1 and date=(select max(date) from orndbf where kh=:kh2)');
parameters.ParamByName('Kh1').value:='20861';
parameters.ParamByName('Kh2').value:='20861';
open;
 
参数一样。

kh1
 
》》{UnPrepare;} //第一处错。
是这样的: ADOQuery1.Prepared:=false;
ADOQuery1.Prepared:=true;
》》{sql.add('where kh=:Kh1 and date=(select max(date) from orndbf where kh=:kh1)');}
去掉参数,
先改为sql.add('where kh=''20861'' and date=(select max(date) from orndbf where kh=''20861'')');
试试能行通吗?
 
to jrq:
能通过。
 
按照 dreamliu2001的指示,解决了参数传递问题。给dreamliu2001加25分。谢谢大家。
Prepare问题等待各位解决。
 
ADOQuery1.Prepared:=false;
我已经说过,没有UnPrepare这个东东的!

另,原则上用同一个参数是可以的!
 
TO jrq:
谢谢,问题解决。谢谢大家。
 
多人接受答案了。
 
后退
顶部