報表問題!(分只給一人)(100分)

  • 主题发起人 主题发起人 bright78
  • 开始时间 开始时间
B

bright78

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一個報表在每業有個小計.最後一業有個總計
可第一次打印時小計沒錯!地二次打印時總會把上一個報表最後一業的最後一筆計錄也加起來;
我知道變量沒傾空!可我就是沒辦法清空那個變量
var
qrsendgoods: Tqrsendgoods;
guigood:REAL=0;
guigood2:real=0;
guigood1:real=0;
pagesnext:boolean=false;
number:integer;
implementation

uses gogoods, dmbase;

{$R *.DFM}

procedure Tqrsendgoods.PageHeaderBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
qrgopages.Caption:=form8.oldgosend;
qrguest.Caption:=form8.oldguest;
qrtime.Caption:=form8.oldsendtime;
guigood:=0.000;
PrintBand:=true;
number:=0;
end;

procedure Tqrsendgoods.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if dm.sendtable.fieldbyname('go_pages').asstring=form8.oldgosend then
begin
qrsendid.Caption:=dm.sendtable.fieldbyname('goods_id').asstring;
qrsendname.caption:=dm.sendtable.fieldbyname('goods_name').asstring;
qrsendask.Caption:=dm.sendtable.fieldbyname('goods_ask').asstring;
qrsendunit.Caption:=dm.sendtable.fieldbyname('goods_unit').asstring;
qrsendcount.caption:=dm.sendtable.fieldbyname('go_count').asstring;
qrsendprice.Caption:=dm.sendtable.fieldbyname('go_price').asstring;
guigood:=guigood+strtofloat(qrsendnokey.caption);
qrsendnokey.Caption:=dm.sendtable.fieldbyname('go_countprice').asstring;
guigood2:=strtofloat(qrsendnokey.caption);
//guigood:=guigood+strtofloat(qrsendnokey.caption);
//showmessage(inttostr(guigood));
// showmessage('怀妀靡備')
//showmessage('ok!')
qrsendtile.caption:=dm.sendtable.fieldbyname('tile').asstring;
number:=number+1;
PrintBand:=true;
end
else PrintBand:=false;
end;

function Tqrsendgoods.bigcaption(x:string;y:integer):string;
begin
case strtoint(copy(x,y,1)) of
0:Result:='錨';
1:result:='瓞';
2:result:='楚';
3:result:='';
4:result:='佹';
5:result:='斪';
6:result:='翻';
7:result:='';
8:result:='副';
9:result:='墾';
end;
end;

procedure Tqrsendgoods.PageFooterBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
var
i,t:integer;
boolexit:boolean;
begin
//**************************input number maxvalue;
if number<10 then begin pagesnext:=true;guigood:=guigood+guigood2;end
else pagesnext:=false;
boolexit:=false;
gb1.Caption:='';
gb2.Caption:='';
gb3.Caption:='';
gb4.Caption:='';
gb5.Caption:='';
gb6.Caption:='';
qrcount.caption:=floattostr(guigood);
t:=length(qrcount.caption);
for i:=1 to length(qrcount.caption) do
begin
if copy(qrcount.caption,i,1)='.' then begin t:=i-1;boolexit:=true;break;end;
end;
//gb5.Caption:=inttostr(t);
try
if boolexit then
gb6.Caption:=bigcaption(qrcount.caption,t+2)
else gb6.caption:='錨';
gb5.caption:=bigcaption(qrcount.caption,t);
if t>1 then gb4.caption:=bigcaption(qrcount.caption,t-1);
if t>2 then gb3.caption:=bigcaption(qrcount.caption,t-2);
if t>3 then gb2.caption:=bigcaption(qrcount.caption,t-3);
if t>4 then gb1.caption:=bigcaption(qrcount.caption,t-4);
if t>5 then gb1.Caption:=copy(qrcount.caption,1,t-4);
guigood1:=guigood1+guigood;
if pagesnext=true then begin qrlabel24.Caption:='軞磁數:';
QRLabel25.caption:=floattostr(guigood1);
END
ELSE BEGIN
qrlabel24.Caption:='';
QRLabel25.caption:='';
END;
finally
printband:=true;
end;
end;

procedure Tqrsendgoods.QuickRepBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
// guigood1:=0;
// guigood:=0;
end;

end.
 
可能是你报表不是动态创建的,里面的变量没有清理。
你用动态建立报表看看,这样就不用特意去清理报表的变量了!
而且可以释放资源,没有那么容易死机!!
 
多謝提醒!發分獎勵!
 
接受答案了.
 

Similar threads

I
回复
0
查看
444
import
I
I
回复
0
查看
644
import
I
I
回复
0
查看
749
import
I
I
回复
0
查看
616
import
I
后退
顶部