我从网上看到了这段程序,按照步骤进行了操作,但是结果没有在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."合计金额">))]
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."合计金额">))]
解决方案 »
- delphi2010 自己写的组件,安装之后.又找不到了
- delphi语句转C# 语句
- 打开一些工程文件提示“unable to insert an item”,只能重启Delphi
- 菜鸟求助,使用水晶报表导出SQL sever2000的表数据问题
- (活动)社区银行新活动 图书低价限时换购
- 高手进来帮个忙呀,一个关于DBGridEh增加一列显示行号的的功能,谢谢~~
- API函数SetWindowPos的问题
- 我在ODBC中添加了一个dbase的数据源,都需要做些什么可以用ADO连接它?请大家简单讲一下...
- 怎么样向已有窗体发送热键消息
- foxnt、zswang、windindance,斑竹们,还有许许多多的高手们。。。。
- 关于delphi7 调用webservice的问题
- 如何做三层程序中,握手前用户认证成功后再连接socketconnection?
人民币大小写转换
http://www.delphibbs.com/keylife/iblog_show.asp?xid=23634
[MoneyCn(StrToFloat( <frxDBDataset1."合计金额">))]
先试试看。
再不行。
function TFPKJFrm.MoneyCn(mmje: Double): string;
begin
Result:='123';
end;
试试看
[MoneyToCn(<frxDBDataset1."UnitPrice">)]
[MoneyToCn(3256.65)] 提示 标识符为宣告
郁闷啊!!
[MoneyToCn(22.00)] 可以
[MoneyToCn(22)] 出错
[MoneyToCn( <frxDBDataset1."UnitPrice">)]可以
[MoneyToCn(SUM(<frxDBDataset2."subtotal">,DetailData1))]出错,错误表达式,没有定义SUM