with Query1 do
begin
query1.Close;
query1.SQL.Clear;
Query1.SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');
query1.Open;
QuickReport1.DataSet:=query1;
QuickReport1.QRDBText1.DataSet:=query1;
QuickReport1.QRDBText1.DataField:='hm';
QuickReport1.QRDBText2.DataSet:=query1;
QuickReport1.QRDBText2.DataField:='sum(je)';
QuickReport1.QRDBText3.DataSet:=query1;
QuickReport1.QRDBText3.DataField:='count(*)';
QuickReport1.QRDBText4.DataSet:=query1;
QuickReport1.Preview;
end;
为什么不能打印,各位有什么好的方法!

解决方案 »

  1.   

    有了with Query1 do为什么query1.SQL.Clear中还要加query1?
      

  2.   

    上面的QUERY是没有问题,就是sum(je)在报表里没有金额!!!
      

  3.   

    把sql语句写成Select hm,sum(je) as sum,count(*) from temp.db group by hm
    QuickReport1.QRDBText2.DataField:='sum'再试试,
      

  4.   

    TO:boynicky(鱼干儿)
    我试过了,sum不可识别!
      

  5.   

    把sql语句写成Select hm,sum(je) as mysum,count(*) from temp.db group by hm
    QuickReport1.QRDBText2.DataField:='mysum'再试试,
      

  6.   

    //with Query1 do <----下面你已经用了Query1,这里就没有必要了
    //begin
    query1.Close;
    query1.SQL.Clear;
    Query1.SQL.Add(' Select hm,sum(je) as je,count(*) as RecCount from temp.db group by hm ');
    query1.Open;
    QuickReport1.DataSet:=query1;
    QuickReport1.QRDBText1.DataSet:=query1;
    QuickReport1.QRDBText1.DataField:='hm';
    QuickReport1.QRDBText2.DataSet:=query1;
    QuickReport1.QRDBText2.DataField:='je';
    QuickReport1.QRDBText3.DataSet:=query1;
    QuickReport1.QRDBText3.DataField:='RecCount';
    QuickReport1.QRDBText4.DataSet:=query1; <---QRDBText4的DataField呢?
    QuickReport1.Preview;
    end;如果这样Sum还没有值的话,你把Query1放到一个DataModule中去!!
    至于为什么,我也说不出个所以然来,反正就得这样,嘻嘻^o^
      

  7.   

    我测试了一下,QRDBText不适合做这样的事情,建议使用QRExpr,下面是我的代码:
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('select OrderNo,Sum(Qty),count(*) from items group by OrderNo');
      Query1.Open;
      QRExpr2.Expression:= '['+Query1.Fields[0].FieldName+']';
      QRExpr3.Expression:= '['+Query1.Fields[1].FieldName+']';
      QRExpr4.Expression:= '['+Query1.Fields[2].FieldName+']';
      QuickRep1.Preview;
    注意,应首先将QuickRep1的DataSet设置成Query1。
      

  8.   

    with Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');
      Open;
      QuickReport1.DataSet:=query1;
      QuickReport1.QRDBText1.DataSet:=query1;
      QuickReport1.QRDBText1.DataField:='hm';
      QuickReport1.QRDBText2.DataSet:=query1;
      QuickReport1.QRDBText2.DataField:='sum(je)';//改
      QRLabel.Caption := FieldByName('Sum(je)').AsString;//最后用个别名;
      //QRDBText 不要这样用,你用QRLabel,如果多的话,就动态生成;
      QuickReport1.QRDBText3.DataSet:=query1;
      QuickReport1.QRDBText3.DataField:='count(*)';//再取一个名子;
      QuickReport1.QRDBText4.DataSet:=query1;
      QuickReport1.Preview;
    end;
    QuickReport1.QRDBTextX -> QRDBTextX就可以了;
    SQL.Add(' Select hm,sum(je),count(*) from temp.db group by hm ');-〉
    SQL.Add(' Select hm,sum(je) as SumValue,count(*) as CountValue from temp.db group by hm ');
    还有一点,最好不要将统计信息和它字段写在一起;
    用QRExpr肯定比这个更好,你可以试一试的;
      

  9.   

    用 inbud(清风侠) 的;
    应该可以成功的;
    其实解决问题就是两种方法:
    NO.1:
      SQL.Add(' Select hm,sum(je) as SumValue,count(*) as CountValue from temp.db group by hm ');
    NO.2:
      QRExpr
    运行期:
      QRExprX.Expression:= '['+Query1.Fields[0].FieldName+']';//这个我不知道倒底对不对,不过,你打开窗体文件,什么都知道了;
    设计期:
      QRExprX.Expression:= Sum(Query1.FieldByName('je').AsFloat);  
    祝你好运;