fastreport 金额大小写问题

lijunsam 2009-10-08 04:48:29
我从网上看到了这段程序,按照步骤进行了操作,但是结果没有在fastreport中显示出来 不知道什么原因?
function TFPKJFrm.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;

function TFPKJFrm.frxReport1UserFunction(const MethodName: String;
var Params: Variant): Variant;
begin
if UpperCase(MethodName) = UpperCase('MoneyCn') then
Result := MoneyCn(Params[0]);
end;
2:窗体建立的时候添加自定义函数
procedure TFPKJFrm.FormCreate(Sender: TObject);
begin
frxReport1.AddFunction('function MoneyCn(mmje: Double): String;','Myfunction','小写金额转大写的函数');
end;
3:在fastreport中调用函数
[MoneyCn(StrToFloat(<frxDBDataset1."合计金额">))]
...全文
591 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
都先生 2011-12-14
  • 打赏
  • 举报
回复
重新下载转换函数吧,这个不是那么头疼的问题
jmuydm 2011-12-12
  • 打赏
  • 举报
回复
在web应用时如何处理?
mytown98 2010-05-07
  • 打赏
  • 举报
回复
我也试过如下数据
[MoneyToCn(22.00)] 可以
[MoneyToCn(22)] 出错
[MoneyToCn( <frxDBDataset1."UnitPrice">)]可以
[MoneyToCn(SUM(<frxDBDataset2."subtotal">,DetailData1))]出错,错误表达式,没有定义SUM
iamduo 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 smallhand 的回复:]
引用 9 楼 lijunsam 的回复:
你有qq吗 咨询你一下 我的365584836

sorry, Cannot use QQ and any Community Tools in Company!
[/Quote]

火龙,是哪个公司的?
怎么好像跟我一样情况
火龙岛主 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lijunsam 的回复:]
你有qq吗 咨询你一下 我的365584836
[/Quote]
sorry, Cannot use QQ and any Community Tools in Company!
lijunsam 2009-10-09
  • 打赏
  • 举报
回复
你有qq吗 咨询你一下 我的365584836
lijunsam 2009-10-09
  • 打赏
  • 举报
回复
哥们我是用的自己的 我没那么晕 但是确实出现以上那种错误了
火龙岛主 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lijunsam 的回复:]
[MoneyToCn( <frxDBDataset1."UnitPrice">)] 提示  运算式错误
[MoneyToCn(3256.65)] 提示 标识符为宣告
郁闷啊!!
[/Quote]晕倒,你应该对应到你自己的函数名称和数据集及字段名啊!
怎能照搬照抄!
lijunsam 2009-10-09
  • 打赏
  • 举报
回复
[MoneyToCn( <frxDBDataset1."UnitPrice">)] 提示 运算式错误
[MoneyToCn(3256.65)] 提示 标识符为宣告
郁闷啊!!
火龙岛主 2009-10-09
  • 打赏
  • 举报
回复
http://blog.csdn.net/SmallHand/archive/2009/08/10/4430493.aspx

[MoneyToCn(3256.65)]
[MoneyToCn(<frxDBDataset1."UnitPrice">)]
iamduo 2009-10-08
  • 打赏
  • 举报
回复
[MoneyCn(100)]
先试试看。
再不行。
function TFPKJFrm.MoneyCn(mmje: Double): string;
begin
Result:='123';
end;
试试看
lijunsam 2009-10-08
  • 打赏
  • 举报
回复
哪位高手给仔细讲讲在fastreport中我该如何调用呢,越详细越好 万分感谢!
lijunsam 2009-10-08
  • 打赏
  • 举报
回复
为什么我在fastreport调用不显示结果呢?

在fastreport中调用函数
[MoneyCn(StrToFloat( <frxDBDataset1."合计金额">))]
de410 2009-10-08
  • 打赏
  • 举报
回复

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧