流行模式

紧跟潮流,步入云时代

当前位置:首页>平台开发>流行模式
全部 1208 平台特色 8 经典模式 77 流行模式 108 技术论坛 1014 经典视频 1

新报表中金额转大写

时间:2022-04-29   访问量:1307
解决问题:查询结果中的金额字段,可在新报表中金额转大写。

注意事项:图片展示

代码如下:

function SmallTOBig(small:real):string;
var
S1,B1,w1,qw1:string;
qw,dwz,q:integer;
begin
s1 :=formatfloat('0.00',small); //格式化字符串
dwz:=pos('.',s1); //求小数点位置
qw :=dwz-2; //第一位的位值
for q:=1 to length(s1) do //从第一位开始循环到最后一位
begin
if q<>dwz then //是点位值跳过
begin
case strtoint(copy(S1,q,1)) of
1:w1:='壹'; 2:w1:='贰';
3:w1:='叁'; 4:w1:='肆';
5:w1:='伍'; 6:w1:='陆';
7:w1:='柒'; 8:w1:='捌';
9:w1:='玖'; 0:w1:='零';
end;
case qw of
-2:qw1:='分'; -1:qw1:='角'; 0:qw1:='元';
1:qw1:='拾'; 2:qw1:='佰'; 3:qw1:='仟';
4:qw1:='万'; 5:qw1:='拾'; 6:qw1:='佰';
7:qw1:='仟'; 8:qw1:='亿'; 9:qw1:='拾';
10:qw1:='佰'; 11:qw1:='仟'; 12:qw1:='兆';
13:qw1:='拾'; 14:qw1:='佰'; 15:qw1:='仟';
end;
if w1='零' then //数值是零的情况
begin
if (qw=4)or(qw=8) then //数位是万位和亿位的情况
begin
if ((q+1)<=length(s1)) and ((q+1)<>dwz) then
if (strtoint(copy(S1,q+1,1))<>0) then
b1:=b1+qw1+w1
else
begin
if copy(b1,length(b1)-1,2)<>'亿' then
b1:=b1+qw1;
end;
end;
if qw=0 then b1:=b1+qw1; //数位是个位的情况
if (qw<>0) and (qw<>4) and (qw<>8) then //数位不是万位,亿位,个位的情况
if ((q+1)<=length(s1)) and ((q+1)<>dwz) then
if (strtoint(copy(S1,q+1,1))<>0) then
B1 :=B1+w1;
end
else
begin
b1 := b1+w1+qw1; //减位数
end;
dec(qw); //qw自动减1
end;//end if
end;//end for

if (pos('角',B1)<=0) and (pos('分',B1)<=0) then
B1:=B1+'圆整';
result:= B1;//返回值
end;



procedure Memo36OnAfterData(Sender: TfrxComponent);
begin
Memo36.text:=SmallTOBig(Memo36.value);
end;


begin

end.

上一篇:新版Windows server+SQL SERVER 客户端登录异常问题解决方案

下一篇:没有了!

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部
备案号码:鲁ICP备09000001号-2