奇怪,我下边的语句执行出来的结果没有明细记录汇总却有数据,而且  JSJE还有值,  
为什么?不应该的,连明细都没有,怎么会有汇总数据,条件都是一样的呀?急呀  
高手给指点迷津.  
    SQL.Add('select 0 as PX, CustomerName, JSJE');
    SQL.Add(' from Customer');
    SQL.Add('where 1=1');
    if edtKSRQ.Date <> 0 then
    begin
      SQL.Add('and JSSJ>=:pKSRQ');
      Parameters.ParamByName('pKSRQ').Value :=  edtKSRQ.Date;
    end;
    if edtJSRQ.Date <> 0 then
    begin
      SQL.Add('and JSSJ<=:pJSRQ');
      Parameters.ParamByName('pJSRQ').Value :=  edtJSRQ.Date;
    end;
    SQL.Add('union all');
    SQL.Add('select 1 as PX, ''合计'',sum(JSJE) as JSJE');
    SQL.Add(' from  Customer');
    SQL.Add('where 1=1');
    if edtKSRQ.Date <> 0 then
    begin
      SQL.Add('and JSSJ>=:pKSRQ1');
      Parameters.ParamByName('pKSRQ1').Value :=  edtKSRQ.Date;
    end;
    if edtJSRQ.Date <> 0 then
    begin
      SQL.Add('and JSSJ<=:pJSRQ1');
      Parameters.ParamByName('pJSRQ1').Value :=  edtJSRQ.Date;
    end;
    SQL.Add('order by PX');

解决方案 »

  1.   

    你SQL写得太乱了
    看得我眼花,希望整理一下,还有结果到底出了什么啊
      

  2.   

    select 0 as PX, CustomerName, JSJE
         from Customer
        where 1=1
          and JSSJ=:pKSRQ
        union all
        select 1 as PX, '合计',sum(JSJE) as JSJE
         from  Customer
        where 1=1
          and JSSJ=:pKSRQ1
        order by PX出来的结果是合计    10
    但是没有明细?不知道为什么,查询条件都是一样的.
      

  3.   

    你单执行这个:
    select 0 as PX, CustomerName, JSJE
         from Customer
        where 1=1
          and JSSJ=:pKSRQ看能不能出数据?
      

  4.   

    问题应该是 出在
        begin
          SQL.Add('and JSSJ>=:pKSRQ');
          Parameters.ParamByName('pKSRQ').Value :=  edtKSRQ.Date;
        end;
        if edtJSRQ.Date <> 0 then
        begin
          SQL.Add('and JSSJ<=:pJSRQ');
          Parameters.ParamByName('pJSRQ').Value :=  edtJSRQ.Date;
        end;
    把pKSRQ/edtKSRQ.Date/pJSRQ/edtJSRQ.Date这四个值检查一下吧 看看是不是格式有对不上
      

  5.   

    单独执行是没有数据的,
    另外:edtKSRQ.Date
         edtJSRQ.Date是没有什么问题,是个日期控件.
      

  6.   

    在SQL语句执行之前,把他打印出来看看,一般都是SQL语句的问题,也可以用GetLastError看看是什么错误。