行,列想必是不固定的吧?可以控制行列?
若是我采用一个临时表,然后用QuickRep,,,这种方法不好。我实在想不到其它

解决方案 »

  1.   

    如果不会在存储过程中建临时表,那么就建一个物理表
    有 字段 (姓名  工资  签名  姓名  工资  签名  姓名  工资  签名 )
    先清空物理表
    再用Fetch语句将每三条记录插入一条中
    最后从物理表中将数据选出
      

  2.   

    如果你用Reportbuilder報表元件的話
    這種簡單的問題就不用問了
    真要使用delphi的
    只有用循環
      

  3.   

    那位可以给我个示范代码,我刚学Delphi
      

  4.   

    不用那么烦吧,直接设置报表的Columns为3就可以了
      

  5.   

    我设了以后好像没有作用,band还是一整条
      

  6.   

    columnband 变成上下排,而不是左右排了?!!!
      

  7.   

    那就使用别的打印控件吧,比如fastreport、reportbuilder.
    这种问题在里面都很简单的。
      

  8.   

    实际上你可以使用一个简单的方法
    在Detail中放9个QRLabel
     //每次打印详细列表(BandType=rbDetail),会触发这个事件
    procedure TForm1.QuickRep1NeedData(Sender: 
    TObject; var MoreData: Boolean);
    var
      I: integer;
    begin
      MoreData := True;
      for I:= 1 to 3 do
      begin
        if Table1.Eof then Break;
        case I of
          1: begin
               QRLabel1.Caption :=Table1.FieldByName('Name').AsString;
               QRLabel2.Caption :=Table1.FieldByName('Salary').AsString;
               QRLabel3.Caption :=Table1.FieldByName('UnderWrite').AsString;
             end;
          2: begin
               QRLabel4.Caption :=Table1.FieldByName('Name').AsString;
               QRLabel5.Caption :=Table1.FieldByName('Salary').AsString;
               QRLabel6.Caption :=Table1.FieldByName('UnderWrite').AsString;
             end;
          3:begin
               QRLabel7.Caption :=Table1.FieldByName('Name').AsString;
               QRLabel8.Caption :=Table1.FieldByName('Salary').AsString;
               QRLabel9.Caption :=Table1.FieldByName('UnderWrite').AsString;
             end;
          end;
        Table1.Next;
      end;
      if Table1.Eof then MoreData := False;
    end;
    另外要使从第一条打起
    procedure TForm1.QuickRep1BeforePrint
    (Sender: TCustomQuickRep;
      var PrintReport: Boolean);
    begin
      Table1.First;
    end;
      

  9.   

    应该是可以的,你有没有将BandType设为rbDetail