with ADOSQL do
begin
      close;
      SQL.Clear;
      SQL.Text:=GetSQLStr('--A11_SELECT','--A11_KEY')+' '+GetSQLStr('--A11_KEY','');   
               //GetSQLStr函数是获取本地.text文件中的SQL语句,此函数已验证过可行!
      Parameters.ParamByName('TB004').Value:=Ts1; 
               //现在关键就是不知道Ts1该传什么样的格式才行
      Open;
end;问题:
1、其中SQL条件语句是这样写的,不知道对不对——>……Where TB004 IN (:TB004)AND……
2、而实际这个参数是动态的,取决于另外一个查询集,主要表现为编码信息,如:
    1000001,1002001,202410122,……
3、现在主要的问题不知道是如里出错了,查询总不能成功,如果直接将这段SQL拷到SQL查询分析器里是没有问题的!

解决方案 »

  1.   

    没有错,用in就是这样的 in (a,b,c) 或 in ('a','b','c'),只要执行时不报错,就是对的,至于查不到数据,需要仔细调试一下,可以先固定条件,然后一步步调
      

  2.   

    执行时不报错,只是没有查询结果而已,我如果条件只有一个编码,把IN改成=,就可以成功;
    但就是不知道为什么用in,多个编码传入就不对了,昨天折腾我一天了!
      

  3.   


    是可以的,我就是将条件带进去,在SQL查询分析器里可以得到结果
      

  4.   

    我估计是这句Parameters.ParamByName('TB004').Value:=Ts1; 
    将Ts1的值加了引号造成,但又不知道如何去掉?
    最终结果应该是:Where TB004 IN ('1000001','1002001','202410122')
    而有了第一句,应该会变成Where TB004 IN (''1000001','1002001','202410122''),所以不能查到结果,但不知道怎么转?
      

  5.   

    Parameters.ParamByName('TB004').Value:=Ts1; 
    是将TS1赋给TB004啊。你把IN里的内容用别的变量看看。