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

    不行啊,是不是bde有问题。。
      

  2.   

    你把你的sql语句拿到oracle去查一下,看看能不能查到!
      

  3.   

    to 9igogo(就爱狗狗):
    可以查到的!
      

  4.   

    哪位有好的建议!
    help me!
      

  5.   

    帮你up
    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;