全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:914
推到 Plurk!
推到 Facebook!

大小写代码运行问题

答題得分者是:supman
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-09 21:20:27 IP:222.184.xxx.xxx 未訂閱
var printform: Tprintform; s:string; implementation uses sf; {$R *.dfm} function zStrFormat(Format,Str,Mode:String):String;overload; var Len1,Len2:Integer; TempStr:String; begin Len1:=Length(Format); Len2:=Length(Str); TempStr:=Copy(Format,1,Len1-Len2); if (Mode='LeftJustify') then TempStr:=Str TempStr; if (Mode='RightJustify') then TempStr:=TempStr Str; result:=TempStr; end; procedure Tprintform.FormShow(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from tb_sf where 票据号=' sfform.Label3.Caption); ADOQuery1.Open ; ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('select * from tb_sf where 票据号=' sfform.Label3.Caption); ADOQuery2.SQL.Add(' and 应收金额<>0'); ADOQuery2.Open ; end; //打印 procedure Tprintform.Button1Click(Sender: TObject); begin frxReport1.LoadFromFile('mzsf.fr3'); frxReport1.PrepareReport; frxReport1.ShowPreparedReport; printform.Close ; end; procedure Tprintform.Button2Click(Sender: TObject); begin printform.Close; end; procedure Tprintform.frxReport1GetValue(const VarName: String; var Value: Variant); var S1,Result:String; i,Num:integer; begin S1:= s; Result:=''; S1:=StringReplace(S1,'.','',[rfReplaceAll]); S1:=zStrFormat('0000000',S1,'RightJustify'); for i:=1 to Length(S1) do begin Num:=StrToInt(S1[i]); Case Num Of 0:Result:=Result '零 '; 1:Result:=Result '壹 '; 2:Result:=Result '貳 '; 3:Result:=Result '參 '; 4:Result:=Result '肆 '; 5:Result:=Result '伍 '; 6:Result:=Result '陸 '; 7:Result:=Result '柒 '; 8:Result:=Result '捌 '; 9:Result:=Result '玖 '; end; end; //fastreport momo中取得变量值(显示大写金额) frxReport1.Script.Variables['aa']:=Result; end; procedure Tprintform.ADOQuery2AfterOpen(DataSet: TDataSet); begin //这是取得小写金额的数据 s:= Format('%.2f',[ ADOQuery2.Fieldbyname('应收金额').AsFloat]); end; end. 问题:本代码在初次运行时(即打印第一张票时),大写金额完全正常)但接着收第二张票时(每打印一次打印窗口显示一次),其它的数字都变成当前第二张的,但大写金额还是第一张的数字。
------
我的编程起步于ktop,我将永远支持ktop
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-10 01:13:14 IP:203.204.xxx.xxx 未訂閱
您好: 您要將您列印的那一段原始碼也秀出來才知道,因為從您貼的程式碼上看不到哪裡呼叫了frxReport1GetValue,也許您根本沒有呼叫,或者Report的DataSet沒有去指定,他才會永遠印第一次的數據,如果您是在 procedure Tprintform.ADOQuery2AfterOpen(DataSet: TDataSet); begin //这是取得小写金额的数据 s:= Format('%.2f',[ ADOQuery2.Fieldbyname('应收金额').AsFloat]); end; 只有在這去取得金額的數據也不對,因為Open只有一次,所以你只會抓到第一筆的值,你應該要寫報表的在BeforePrint事件裡面.
系統時間:2024-07-01 15:57:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!