当然我的报表另有代码,以下是我实现的简化的代码,现在求高手来帮帮忙
procedure test;
var
myqr:TQRLABEL;
i,j:integer;
begin
i:=0;
j:=0;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from test');
adoquery1.open;
while not adoquery1.eof do 
  begin
    if j>=20 then
        begin
           j:=0;
           i:=0;
           //如何在这实现分页?比如每二十条记录为一页 
        end;
     MyQr:=TQRLabel.Create(self);
     MyQr.Parent :=summ3;
     MyQr.name :='Q'+adoquery1.fieldbyname('id').asstring;
     MyQr.Top:=i;
     MyQr.Left:=34;
     MyQr.Width :=26;
     MyQr.Height :=17;
     MyQr.Caption:=adoquery1.fieldbyname('name').asstring;
     i:=i+20;
     inc(j);
     adoquery1.next;
  end;

解决方案 »

  1.   

    给一例子,在QR的ON NEED DATA事件中
           inc(i);//i是一個全局變量 
    //qr不要設置dataset(即為空),BeforePrin裡面dataset.first;//設置為第一記錄
    //在onneeddata裡面,
    //因為以前搞過,都過了比較久了,你試試看看行不行
            if not ADOQuery1.Eof then
            begin
                    QRLabel2.Caption:=ADOQuery1.Fields[1].AsString;
                    QRLabel3.Caption:=ADOQuery1.FieldByName('SL').AsString;//+ADOQuery1.FieldByName('DW').AsString;
                    ADOQuery1.Next;                if i<=20 then
                    MoreData:=true
                    else
                    begin
                    QuickRep1.NewColumn;
                    i:=0;
                    MoreData:=true;
                    end;
            end
            else
            begin
                    QRLabel2.Caption:='';
                    QRLabel3.CaptioN:='';                if i=20 then
                    MoreData:=false;
            end;
      

  2.   

    MyQr:=TQRLabel.Create(self);
         MyQr.Parent :=summ3;
         MyQr.name :='Q'+adoquery1.fieldbyname('id').asstring;
         MyQr.Top:=i;
         MyQr.Left:=34;
         MyQr.Width :=26;
         MyQr.Height :=17;
         MyQr.Caption:=adoquery1.fieldbyname('name').asstring;这种代码不能在里面,否则报错
      

  3.   

    当然我的报表另有代码,以下是我实现的简化的代码,现在求高手来帮帮忙
    procedure test;
    var
    myqr:TQRLABEL;
    i,j:integer;
    begin
    i:=0;
    j:=0;
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select * from test');
    adoquery1.open;
    while not adoquery1.eof do 
      begin
        if j>=20 then
            begin
               j:=0;
               i:=0;
               QuickRep1.NewPage;//分页
            end;
         MyQr:=TQRLabel.Create(self);
         MyQr.Parent :=summ3;
         MyQr.name :='Q'+adoquery1.fieldbyname('id').asstring;
         MyQr.Top:=i;
         MyQr.Left:=34;
         MyQr.Width :=26;
         MyQr.Height :=17;
         MyQr.Caption:=adoquery1.fieldbyname('name').asstring;
         i:=i+20;
         inc(j);
         adoquery1.next;
      end;MyQr:=TQRLabel.Create(self);
         MyQr.Parent :=summ3;
         MyQr.name :='Q'+adoquery1.fieldbyname('id').asstring;
         MyQr.Top:=i;
         MyQr.Left:=34;
         MyQr.Width :=26;
         MyQr.Height :=17;
         MyQr.Caption:=adoquery1.fieldbyname('name').asstring;这种代码不能在里面,否则报错
    //没碰到过
      

  4.   

    有谁可以以下面的方式实现分页?
    procedure test;
    var
    myqr:TQRLABEL;
    i,j:integer;
    begin
    i:=0;
    j:=0;
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select * from test');
    adoquery1.open;
    while not adoquery1.eof do 
      begin
        if j>=20 then
            begin
               j:=0;
               i:=0;
               QuickRep1.NewPage;//分页
            end;
         MyQr:=TQRLabel.Create(self);
         MyQr.Parent :=summ3;
         MyQr.name :='Q'+adoquery1.fieldbyname('id').asstring;
         MyQr.Top:=i;
         MyQr.Left:=34;
         MyQr.Width :=26;
         MyQr.Height :=17;
         MyQr.Caption:=adoquery1.fieldbyname('name').asstring;
         i:=i+20;
         inc(j);
         adoquery1.next;
      end;
      

  5.   

    唉,高手?该死的DELPHI,实在不行就用画布了
      

  6.   

    一个系统其它全是DELPHI做的APP,然后忽然出来一个ASP,那成什么,哈哈哈
      

  7.   

    请问一下高手!
    如何用画布的方法在一个QuickRep1中设置两页表格!???