当然我的报表另有代码,以下是我实现的简化的代码,现在求高手来帮帮忙
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;
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;
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;
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;这种代码不能在里面,否则报错
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;这种代码不能在里面,否则报错
//没碰到过
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;
如何用画布的方法在一个QuickRep1中设置两页表格!???