如报表如:   王二  20     王大   60
  李四  30     王三   20
  赵七  30      李七   10    小计    80       小计      90总和:   170报表分了两列显示数据,现在想让表格自动算出两个“小计”的数据和“总和”的数据。
如何做呢?

解决方案 »

  1.   

    我想,应该可以使用SubReport实现。
    由于给你一个Demo实现起来需要做的许多的工作见谅
      

  2.   

    小的时候是这样做的:建个临时TTABLE用来显示和打印。procedure TFrm_MAllTongji.Button1Click(Sender: TObject);
    var
    temp :array [1..6] of real;
    i:integer;
    begin
    for i:=1 to 6 do
    temp[i]:=0;while not table3.IsEmpty do
    table3.Delete;
    table1.First;
    while not(table1.Eof)do
     begin
     if table1.FieldByName('使用单位').asstring=combobox1.Text then
      begin
     { with Query1 do
      begin
       Close;
       SQL.Clear;
       SQL.Add('SELECT * FROM upkeep.db WHERE 车牌号码='+'"'+table1['车牌号码']+'"');
       prepare;
       open;
      end; }  table3.Last;  if not table3.FindKey([table1['车牌号码']]) then
      try
      table3.append;
      table3['车牌号码']:=table1['车牌号码'];
      table3['基本费']:=table1['基本费'];
      table3['车况维修费']:=table1['车况维修费'];
      table3['里程维修费']:=table1['里程维修费'];
      table3['维修费总额']:=table1['维修费总额'];
      table3['维修费支出']:=table1['维修费总额']-table1['维修费节余'];
      table3['维修费节余']:=table1['维修费节余'];
      table3.Post;
      except
      end
      else
      try
      table3.edit;
      table3['车牌号码']:=table1['车牌号码'];
      table3['基本费']:=table1['基本费'];
      table3['车况维修费']:=table1['车况维修费'];
      table3['里程维修费']:=table1['里程维修费'];
      table3['维修费总额']:=table1['维修费总额'];
      table3['维修费支出']:=table1['维修费总额']-table1['维修费节余'];
      table3['维修费节余']:=table1['维修费节余'];
      table3.Post;
      except
      end;
      end;
      table1.Next;
     end;
     table3.First;
     while not table3.Eof do
     begin
      for i:=1 to 6 do
       temp[i]:=temp[i]+table3.Fields[i].AsFloat;
      table3.Next;
     end;
     table3.Append;
     for i:=1 to 6 do
      table3.Fields[i].AsFloat:=temp[i];
     table3['车牌号码']:='总 计';
     statusbar1.Panels[0].Text:='当前计录 '+(inttostr(table3.RecordCount))+' 条';
    end;procedure TFrm_MAllTongji.FormCreate(Sender: TObject);
    begin
    Height:=Constraints.MinHeight;
    Width:=Constraints.MinWidth;
    table1.Close;
    table3.Close;
    //query1.Close;
    table1.DatabaseName:=extractfilepath(paramstr(0))+'data\';
    table3.DatabaseName:=extractfilepath(paramstr(0))+'data\';
    query1.DatabaseName:=extractfilepath(paramstr(0))+'data\';
    table1.Open;
    table3.Open;
    //query1.Open;
    while not table3.IsEmpty do
    table3.Delete;
    end;
      

  3.   


       我认为应该从数据库的读取数据时入手。也就是用SQL语言实现比较好。
      

  4.   

    如何对报表中的一个字段的记录进行计算? 
    主要解答者: happyzsl 提交人: jihlz 
    感谢: happyzsl 
    审核者: ddvboy 社区对应贴子: 查看 
         A :  如何对报表中的一个字段的记录进行计算?比如计算总数和平均数。  
    ---------------------------------------------------------------  
     
    QuickRep.Banks有一个hasSummary  
    在SummaryBank中放QRExpr组件,编写汇总表达式
      

  5.   

    学习一下,我一般不用quickrep的
      

  6.   

    哈哈,两颗星就用两颗星的解答吧!同意jinjazz(近身剪(N-P攻略))
      

  7.   

    用TQRLabel来显示那些数字,
    定义一个变量,在detailBandBeforePrint里Inc这个变量,得出来的就是小计了,小计得到总计就不难了,
    我以前做会计系统的报表的时候就是这样做的,不过速度会慢一点,呵
      

  8.   

    听说rave控件组比Qreport控件组更好嘛,试试吧。
      

  9.   

    小计..用临时表.
    总计..用QrExpress..