我要对一个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 !!!

解决方案 »

  1.   

    可能是数据库的问题,试试看在别的数据库是不是可以,象sql与access的查询结果有时候代码相同但是结果就是不一样!不同的库可能要重改一下代码
      

  2.   

    aa:='''2000'',''2001'',''2002'',''2003''';
    ADD('SELECT * FROM xxx WHERE LTRIM(RTRIM(hao)) in ('+aa+') ');open;
      

  3.   

    这不是一个字符串吗?为什么要用宏呢?你写成:
    ADD('or LTRIM(RTRIM(hao))=:hao&i ');  改为
    ADD('or LTRIM(RTRIM(hao))=:hao'+inttostr(i));不就行了吗?
      

  4.   

    to menliwxj(有缘) :
    我试了,怎么报:“SQL COMMAND NOT PROPERLY ENDED!”
      

  5.   

    解决了!!!谢谢 menliwxj(有缘)