本帖最后由 maoyunaa 于 2012-05-10 22:27:44 编辑

解决方案 »

  1.   

    连接打印在于设置好报表的长宽。WINDOWS的打印功能自动会连续打印。长宽如果设置不准确,打印会错位。即要么越来越宽;要么越来越短。所以,把报表的长宽设置准确无误了,其他的交给WINDOWS了。
      

  2.   

    问题已经解决,在FastReport 中写代码搞定。代码如下:
    var
      aa:Integer;
      maxRow:Integer;procedure Page1OnManualBuild(Sender: TfrxComponent);
    var
      DataSet: TfrxDataSet;
      DataSet1: TfrxDataSet;                                                 
    begin
      aa:=1;
      Engine.ShowBand(MasterData1);
      DataSet := DetailData1.DataSet;
      DataSet.First;
      while (not DataSet.Eof) or ((aa-1) mod MaxRow<>0) do
      begin
         if DataSet.Eof then Engine.ShowBand(Child1)
         else Engine.ShowBand(DetailData1);
         DataSet.Next;
         aa:=aa+1;
         if (((aa-1) mod (MaxRow)=0) and (not DataSet.Eof)) then
         begin                 
           EngIne.Newpage;
           EngIne.showband(MasterData1);
         end;                 
      end;
      DataSet1 := MasterData1.DataSet;
      DataSet1.next;      
      while (not DataSet1.Eof) do
      begin
        EngIne.Newpage;
        EngIne.showband(MasterData1);
        DataSet := DetailData1.DataSet;
        DataSet.First;
        aa:=1;                  
        while (not DataSet.Eof) or ((aa-1) mod MaxRow<>0) do
        begin
          if DataSet.Eof then Engine.ShowBand(Child1)
          else Engine.ShowBand(DetailData1);
          DataSet.Next;
          aa:=aa+1;
          if (((aa-1) mod (MaxRow)=0) and (not DataSet.Eof)) then
          begin                 
            EngIne.Newpage;
            EngIne.showband(MasterData1);
          end;                 
        end;        
        DataSet1.next;                                                
      end;      
    end;begin
      maxRow:=5; //每页最大行数
    end.