我想打印时把金额字段转化为大写,表达式怎么写,请高人指点,谢谢例如
1010元
打印时格式如下
壹 仟 零 佰 壹 拾 零 元
1010元
打印时格式如下
壹 仟 零 佰 壹 拾 零 元
解决方案 »
- 我的问题是右键单击空白处他总是弹出最后一次拥有焦点的节点的弹出菜单
- ehlib中的dbgrideh本地排序问题
- 判断输入的内容是否是数字的函数是什么呢?急用!!!
- 一个调用DLL的问题,我调用的DLL是一个C写的,接口参数是un char *型,我实在不知该用什么变量接收
- 如何在win98和win2000下分别实现重新启动的功能
- 多语言应用程序
- 文件和图标!急急急!!!十万火急!!!
- 跟据EXECL数据更新SQLSERVER数据库中数据怎么实现?
- 多个客户端向服务器端同时发送信息时,服务器端有时会丢失信息,请问如何解决?急
- 如何将图片以jpg,gif格式存入数据库(三层的通过clientdataset)和读出
- 帮看下这个拼sql的语句为何会报错,谢谢
- 新手小问题
frxReport.AddFunction('function MoneyCn(mmje: Extended): String;','Myfunction','小写金额转大写的函数');
我放在了窗体创建的时候增加。2.在程序中增加以下函数:
//------------------大写金额转换函数------------------------//
function MoneyCn(mmje: Extended): 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;
//---------------大写金额转换函数(止)---------------------//
3.在frxReport的OnUserFunction事件中增加:
function TfrmMain.frxReportUserFunction(const MethodName: String;
var Params: Variant): Variant;
begin
if UpperCase(MethodName) = UpperCase('MoneyCn') then
Result := MoneyCn(Params[0]);
end;
4.在报表中这样用:[MoneyCn(SUM(<frxUserDataSet."field9">,MasterData1))]