select sum(总价) from 销货确认书二  where 编号 in 
(select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>='2005-08-26' and 装运期限中<='2005-08-28')
这名话在sql server 查询器中能运行。
但是:
adoquery1.close;
adoquery1.sql.clear;
ADOQUERY1.SQL.ADD(str);
ADOQUERY1.SQL.ADD('select sum(总价) from 销货确认书二  where 编号 in 
(select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>='2005-08-26' and 装运期限中<='2005-08-28')')
adoquery1.Open;
不能通过,怎么改呢?
另外如果我想用参数的话,下面的又怎么处理呢?
            adoquery1.close;
            adoquery1.sql.clear;
            ADOQUERY1.SQL.ADD('select sum(总价) from 销货确认书二  where 编号 in (select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>=:rq1 and 装运期限中<=:rq2)');
            adoquery1.Parameters[0].Value:=datetostr(datetimepicker3.Date);
            adoquery1.Parameters[0].Value:=datetostr(datetimepicker4.Date);
            adoquery1.Open;

解决方案 »

  1.   

    ADOQUERY1.SQL.ADD('select sum(总价) from 销货确认书二  where 编号 in 
    (select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>=''2005-08-26'' and 装运期限中<=''2005-08-28'')');
      

  2.   

    1.改为下面试试:
    ADOQUERY1.SQL.ADD('Select Sum(a.总价) from 销货确认书二 a, 销货确认书一 b
    where a.编号=b.编号 and b.发货与否=0 and b.装运期限中>='2005-08-26' and b.装运期限中<='2005-08-28')这样应该比你应in 速度快很多2.
            adoquery1.close;
                adoquery1.sql.clear;
                ADOQUERY1.SQL.ADD('select sum(总价) from 销货确认书二  where 编号 in (select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>=:rq1 and 装运期限中<=:rq2)');
                adoquery1.Parameters('rq1').Value:=FormatDateTime('yyyy-mm-dd', datetimepicker3.Date);
                adoquery1.Parameters('rq2').Value:=FormatDateTime('yyyy-mm-dd', datetimepicker4.Date);
                adoquery1.Open;
      

  3.   

    Var
     S:string;
    begin
     s:='select sum(总价) from 销货确认书二  where 编号 in ';
     S:=S+'(select 编号 from  销货确认书一  where 发货与否=0 and';
     S:=S+ '装运期限中>=''2005-08-26'' and 装运期限中<=''2005-08-28'')';
     adoquery1.close;
     adoquery1.sql.clear;
     ADOQUERY1.SQL.ADD(S);
     adoquery1.Open;
    end;
      

  4.   

    你的少了引號:
     
    參數:
                adoquery1.close;
                adoquery1.sql.clear;
                ADOQUERY1.SQL.ADD('select sum(总价) from 销货确认书二  where 编号 in (select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>=:rq1 and 装运期限中<=:rq2)');
                adoquery1.Parameters[0].Value:=datetostr(datetimepicker3.Date);
                adoquery1.Parameters[1].Value:=datetostr(datetimepicker4.Date);
                adoquery1.Open;
      

  5.   

    1.改为下面试试:
    ADOQUERY1.SQL.ADD('Select Sum(a.总价) from 销货确认书二 a, 销货确认书一 b
    where a.编号=b.编号 and b.发货与否=0 and b.装运期限中>=''2005-08-26'' and b.装运期限中<=''2005-08-28'')
      

  6.   

    adoquery1.close;
                ADOQUERY1.SQL.text:='select sum(总价) from 销货确认书二  where 编号 in (select 编号 from  销货确认书一  where 发货与否=0 and 装运期限中>=:rq1 and 装运期限中<=:rq2)');
                adoquery1.Parameters[0].Value:=datetostr(datetimepicker3.Date);
                adoquery1.Parameters[1].Value:=datetostr(datetimepicker4.Date);
                adoquery1.Open;
      

  7.   

    楼上的可以,delphi中的单引号要用2个单引号