如何控制delphi6 中TQuickRep的打印行數(100分)

  • 主题发起人 主题发起人 liaodm
  • 开始时间 开始时间
L

liaodm

Unregistered / Unconfirmed
GUEST, unregistred user!
本人使用的是delphi6.0 現在寫一個報表我希望能控制每一頁只能打印5行數DataSet里面的數據,當DataSet中的數據不足,5行則打印空格.請各位大俠幫忙
 
var
i: integer;
begin
QRbjd := TQRbjd.Create(self);
try
i := 18;
BDE1.Close;
BDE1.CommandText := ' select count(*) from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + '''';
BDE1.Open;
if BDE1.RecordCount < 18 then
begin
for i := 1 to 18 - BDE1.RecordCountdo
begin
BDE2.Close;
BDE2.CommandText := ' insert into T_BJDMXB(BJDH,BJ) values(''' + Trim(bjdh.Text) + ''',1) ';
BDE2.Execute;
end;
end;

if BDE1.RecordCount > 18 then
begin
for i := 1 to 18 - (BDE1.RecordCount mod 18)do
begin
BDE2.Close;
BDE2.CommandText := ' insert into T_BJDMXB(BJDH,BJ) values(''' + Trim(bjdh.Text) + ''',1) ';
BDE2.Execute;
end;
end;
BDEBJMX.Close;
BDEBJMX.CommandText := ' select * from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + ''' ';
BDEBJMX.Open;
QRbjd.Preview;
finally
QRbjd.Free;
QRbjd := nil;
end;
BDE2.Close;
BDE2.CommandText := ' delete from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + ''' and BJ=''1'' ';
BDE2.Execute;
BDEBJMX.Close;
BDEBJMX.CommandText := ' select * from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + ''' ';
BDEBJMX.Open;
这段程序是打印18行,在要打印的表中添加BJ字段,不足18行的就向表中添加空记录。
 
不好意思,我没有MSN,上班时间也不能上QQ。
 
var
i: integer;
begin
QRbjd := TQRbjd.Create(self);
try
i := 18;
BDE1.Close;
BDE1.CommandText := ' select count(*) from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + '''';//选出要打印的记录数
BDE1.Open;
if BDE1.RecordCount < 18 then
begin
//假如记录数小于打印行数
for i := 1 to 18 - BDE1.RecordCountdo
begin
BDE2.Close;
BDE2.CommandText := ' insert into T_BJDMXB(BJDH,BJ) values(''' + Trim(bjdh.Text) + ''',1) ';//向表中添加不足的记录数,使表中的记录数刚好等于打印行数
BDE2.Execute;
end;
end;

if BDE1.RecordCount > 18 then
begin
for i := 1 to 18 - (BDE1.RecordCount mod 18)do
begin
BDE2.Close;
BDE2.CommandText := ' insert into T_BJDMXB(BJDH,BJ) values(''' + Trim(bjdh.Text) + ''',1) ';
BDE2.Execute;
end;
end;
BDEBJMX.Close;
BDEBJMX.CommandText := ' select * from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + ''' ';//重新选出打印记录数
BDEBJMX.Open;
QRbjd.Preview;
finally
QRbjd.Free;
QRbjd := nil;
end;
BDE2.Close;
BDE2.CommandText := ' delete from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + ''' and BJ=''1'' ';
BDE2.Execute;
BDEBJMX.Close;
BDEBJMX.CommandText := ' select * from T_BJDMXB where BJDH=''' + Trim(bjdh.Text) + ''' ';
BDEBJMX.Open;
 
QRbjd := TQRbjd.Create(self);請問這個是什麼?
if BDE1.RecordCount > 18 then
begin
for i := 1 to 18 - (BDE1.RecordCount mod 18)do
begin
BDE2.Close;
BDE2.CommandText := ' insert into T_BJDMXB(BJDH,BJ) values(''' + Trim(bjdh.Text) + ''',1) ';
BDE2.Execute;
end;
end;
這個應該是當打印記錄大於打印行數時為何還是添加記錄呢.我不明白請大哥告知
 
那是报表名称
 
先计算应该在表中添加多少空行(可能需要使用临时表了),再用代码来控制,当记录数达到5时,使用QuickReport.Newpage命令。
 
接受答案了.
 
后退
顶部