with dm1.qsubsity do
 begin
 sql.Clear;
 sql.Add('select lnum,ldate,lsubsity,lday,sum(lsubsity) from datelog where ldate between           ');
  SQL.Add('#'+b1+'#'+' and '+'#'+b2+'#');
  dm1.qsubsity.Open;//lsubsity是数字型的,如果是
 sql.Add('select sum(lsubsity) from datelog where ldate between 
  ...
 就不会有错误
 sql.Add('select lnum,ldate,lsubsity,lday from datelog where ldate between     
 ...
 也不会有错!
请问怎么解决?谢谢!错误提示:project evection.exe raised excetpion class EOleexcepion with message'试图执行的查询中部包含作为合计函数一部分的特定表达式'lnum',**不是lnum的问题,删掉lnum,它就提示ldate.

解决方案 »

  1.   

    当然要出错了,你SUM中的只有一条记录,但LNUM,LDATE,LSUBSITY,LDAY可能不止一条记录啊,让他怎么返回查询结果?
      

  2.   

    用group by或者二次查询解决
      

  3.   

    sql.Add('select sum(lsubsity) from datelog where ldate between a1 and a2
    group by lsbsity
      

  4.   

    同意:
    当然要出错了,你SUM中的只有一条记录,但LNUM,LDATE,LSUBSITY,LDAY可能不止一条记录啊,让他怎么返回查询结果?看来,你只有分成两次来执行查询了。
      

  5.   

    补充一下,
    sql.clear;前加上一句;
    close;