我要对一个listbox的值进行查询,开始我是用的query是这样写的:ADD('SELECT * FROM xxx WHERE LTRIM(RTRIM(hao)) in :(hao1) ');PARAMBYNAME('hao1').ASSTRING:=aa;open;(aa在前面已由循环赋值为listbox的值的字符串累加,例如:aa:='2000,2001,2002,2003'可是一执行,始终查询不到数据。(后台是oracle7.3,用BDE)
我怀疑是BDE的Database Driver的问题,但一时也不好更改,只好用其他方法。
我将sql中的in改用or,利用循环:ADD('SELECT * FROM xxx WHERE LTRIM(RTRIM(hao)) in :(hao1) ');PARAMBYNAME(hao1').ASSTRING:=listbox1.items[0];for i:=2 to listbox1.items.count+1 dobegin ADD('or LTRIM(RTRIM(hao))=:hao&i '); PARAMBYNAME(hao&i').ASSTRING:=listbox1.items[i]; end;open;
结果查询是查出来,但始终只有首尾两条记录,还是不行,后来我知道了delphi里没有
&宏变量的用法。我现在实在没有什么好办法了,help me !!!
我怀疑是BDE的Database Driver的问题,但一时也不好更改,只好用其他方法。
我将sql中的in改用or,利用循环:ADD('SELECT * FROM xxx WHERE LTRIM(RTRIM(hao)) in :(hao1) ');PARAMBYNAME(hao1').ASSTRING:=listbox1.items[0];for i:=2 to listbox1.items.count+1 dobegin ADD('or LTRIM(RTRIM(hao))=:hao&i '); PARAMBYNAME(hao&i').ASSTRING:=listbox1.items[i]; end;open;
结果查询是查出来,但始终只有首尾两条记录,还是不行,后来我知道了delphi里没有
&宏变量的用法。我现在实在没有什么好办法了,help me !!!
ADD('SELECT * FROM xxx WHERE LTRIM(RTRIM(hao)) in ('+aa+') ');open;
ADD('or LTRIM(RTRIM(hao))=:hao&i '); 改为
ADD('or LTRIM(RTRIM(hao))=:hao'+inttostr(i));不就行了吗?
我试了,怎么报:“SQL COMMAND NOT PROPERLY ENDED!”