有关fastreport报表中金额大写问题 |
缺席
|
chamstar
一般會員 發表:24 回覆:36 積分:12 註冊:2004-10-16 發送簡訊給我 |
我用fastreport3 作报表时,有一金额合计栏 [SUM(
function MoneyCn(mmje: Double): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万'; function StrTran(const S, s1, s2: string): string; begin Result := StringReplace(S, s1, s2, [rfReplaceAll]); end; var S, dx: string; i, Len: Integer; begin if mmje < 0 then begin dx := '负'; mmje := -mmje; end; S := Format('%.0f', [mmje * 100]); Len := Length(S); for i := 1 to Len do dx := dx Copy(s1, (Ord(S[i]) - Ord('0')) * 2 1, 2) Copy(s2, (Len - i) * 2 1, 2); dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零仟', '零'), '零佰', '零'), '零拾', '零'), '零角', '零'), '零分', '整'); dx := StrTran(StrTran(StrTran(StrTran(StrTran(dx, '零零', '零'), '零零', '零'), '零亿', '亿'), '零万', '万'), '零元', '元'); if dx = '整' then Result := '零元整' else Result := StrTran(StrTran(dx, '亿万', '亿零'), '零整', '整'); end; procedure Tyingfu.FormCreate(Sender: TObject); begin DateTimePicker1.Date:=StartOfTheMonth(Now); DateTimePicker2.Date:=Now; frxReport1.AddFunction('function MoneyCn(mmje: Double): String;','Myfunction','小写金额转大写的函数'); end; function Tyingfu.frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant; begin if UpperCase(MethodName) = UpperCase('MoneyCn') then Result := MoneyCn(Params[0]); end; end. 我将述代码加入后,调用MoneyCn,如果用 MoneyCn([SUM( |
chamstar
一般會員 發表:24 回覆:36 積分:12 註冊:2004-10-16 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
不是很懂你的意思, 因為轉大寫實作你都有了, 看到最後一行, 我猜想你的問題是在詢問這個問題
一般fr 如果引用function, 前後一定要加[ ], 這樣才不會被fr誤認為是一串文字或變數(Dictionary), 如果是變數原則上是可以(在begin...end之間) x:= x 1; 要做成 [x]:= [x] 1 亦可, 但在TfrMemoView中 function 一定要 [myfunction]來表示, 兩個function 之間還必須空一格, 否則第二個function會被當成文字看待 如 [myfunction1] [myfunction2] ===================引 用 chamstar 文 章=================== 我将述代码加入后,调用MoneyCn,如果用 MoneyCn([SUM(,MasterData1,2)]) 时,显示结果为 MoneyCn(78160),而不是大写,我测试直接用?? [MoneyCn(78160)],就可以出来,不知是何原因
編輯記錄
P.D. 重新編輯於 2007-08-24 11:45:18, 註解 無‧
|
chamstar
一般會員 發表:24 回覆:36 積分:12 註冊:2004-10-16 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 不是很懂你的意思, 因為轉大寫實作你都有了, 看到最後一行, 我猜想你的問題是在詢問這個問題 一般fr 如果引用function, 前後一定要加[ ], 這樣才不會被fr誤認為是一串文字或變數(Dictionary), 如果是變數原則上是可以(在begin...end之間)?? x:= x 1; 要做成 [x]:= [x] 1 亦可,? 但在TfrMemoView中 function 一定要 [myfunction]來表示, 兩個function 之間還必須空一格, 否則第二個function會被當成文字看待 如 [myfunction1]? [myfunction2] ===================引 用 chamstar 文 章=================== 我改为 [MoneyCn([SUM(,MasterData1,2)])] ,运行报表时报以下错误: source file not Found: Fs_iilparser.pas 我点Ignore 略过后又报以下错误 Error in expression 'MoneyCn([SUM 不知是何原因。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |