begin
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('select zcmessage.zcid as 代码,zcmessage.zcname as 姓名,sum(zcmessage.zcmoney) as 支出金额, zcmessage.zcdate as 支出时间 from zcmessage');
      ADOQuery1.SQL.Add('where zcname=:uname');
      ADOQuery1.Parameters.ParamByName('uname').Value := dblookup1.Text;
      ADOQuery1.SQL.Add('group by zcmessage.zcid,zcmessage.zcname,zcmessage.zcmoney,zcmessage.zcdate');
      ADOQuery1.SQL.Add('with rollup');
      ADOQuery1.Open;
    end
上边的这些语句执行的结果总是将相同的记录以几条的方左显示能给我说说错在哪里吗?

解决方案 »

  1.   

    记得在前面加空格ADOQuery1.SQL.Add(' where zcname=:uname');
         ADOQuery1.SQL.Add(' group by zcmessage.zcid,zcmessage.zcname,zcmessage.zcmoney,zcmessage.zcdate');     ADOQuery1.SQL.Add(' with rollup');
      

  2.   

    ADOQuery1.Parameters.ParamByName('uname').Value := dblookup1.Text;
    放到Open前面一句看看。
      

  3.   

    用showmessage看看有没有把dblookup1.Text的值传进去过~~
      

  4.   

    ADOQuery1.SQL.Add('group by zcmessage.zcid,zcmessage.zcname,zcmessage.zcdate');把GROUP 中的 zcmessage.zcmoney 去掉!
      

  5.   

    不知你用'with rollup'的目的如何?
    用sum()就不要用 'with rollup',或者去掉 sum() ;
      

  6.   

    为什么用with rollup?有什么作用?
      

  7.   

    不用WITH ROLLUP 看不到她的具体汇总结果,这个问题困扰我几天了,拜托!有没有别的好办法
      

  8.   

    关键可能还是在于
    ADOQuery1.Parameters.ParamByName('uname').Value := dblookup1.Text;改为VarToStr(dblookup1.KeyValue)试试。