水晶报表中将数字金额转换为大写公式

版本一:这种金额大写忽略不同进度间的零的显示,显示效果如:二十万九百一元四角整(200901.40)

StringVar x;
StringVar xx :
="";
NumberVar z;
NumberVar i;
x :
= ToText(Sum ({@@AMOUNT}));
x :
= Replace(x,",","");
x :
= Replace(x,".","");
z :
= length(x)-2;

for i := z to -1 step -1do
(
    select i
   
case10 : if(Mid(x,z-i+1,1) <>"0") then xx := Mid(x,z-i+1,1) +""
   
case9 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +"亿"else xx := xx +"亿"
   
case8 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""
   
case7 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""
   
case6 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""
   
case5 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""else xx := xx +""
   
case4 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""
   
case3 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""
   
case2 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) +""
   
case1 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1)+""
   
case0 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1)+""
   
case-1 : if(Mid(x,z-i+1,1) <>"0") then xx := xx + Mid(x,z-i+1,1) else xx :=xx+""
);
xx :
= Replace(xx,"1","");
xx :
= Replace(xx,"2","");
xx :
= Replace(xx,"3","");
xx :
= Replace(xx,"4","");
xx :
= Replace(xx,"5","");
xx :
= Replace(xx,"6","");
xx :
= Replace(xx,"7","");
xx :
= Replace(xx,"8","");
xx :
= Replace(xx,"9","");
if instr(xx,'') <=0 then
 
if instr(xx,'')>0 then
    xx:
=left(xx,instr(xx,'')-2)+''+right(xx,len(xx)-instr(xx,'')+2);
 

if right(xx,1)='' then
   
if instr(xx,'')>0 then
      xx :
=left(xx,len(xx)-1)+''
   
else
      xx :
=left(xx,len(xx)-1)+'元整' 
else 
  xx :
=xx +"";

 

版本二:这种金额大写不同进度间的零的显示一次,显示效果如:二十万零九百零一元四角整(200901.40)

StringVar x;
StringVar xx:
="";
NumberVar z;
NumberVar i;
x :
= ToText(Sum ({BuyCompact.SC_SumPrice}));
x :
= Replace(x,",","");
x :
= Replace(x,".","");
z :
= length(x);

for i := z to 1 step -1do
(
    StringVar temp:
=Mid(x,z-i+1,1);
    select i
   
case12 : xx := temp +""
   
case11 : xx := xx + temp +"亿"
   
case10 : xx := xx + temp +""
   
case9 : xx := xx + temp +""
   
case8 : xx := xx + temp +""
   
case7 : xx := xx + temp +""
   
case6 : xx := xx + temp +""
   
case5 : xx := xx + temp +""
   
case4 : xx := xx + temp +""
   
case3 : xx := xx + temp +""
   
case2 : xx := xx + temp +""
   
case1 : xx := xx + temp +""
   
);
stringvar test
="";
z :
= length(xx);
i:
=1;
while i<z do
(
    StringVar temp:
=Mid(xx,i,1);
   
if temp="0" then
    (
       
if mid(xx,i-2,1)<>"0" and (Mid(xx,i+1,1)="亿" or Mid(xx,i+1,1)="" or Mid(xx,i+1,1)="") then
        (
        xx :
=Left (xx,i-1 )+Replace(xx,Mid(xx,i,1) ,"" ,i , 1);
        )
       
elseif mid(xx,i-2,1)<>"0" and i+2<length(xx) and mid(xx,i+2,1)<>"0" then
        (
        xx :
=Left (xx,i )+Replace(xx,Mid(xx,i+1,1) ,"" ,i+1 , 1);
        )
       
elseif Mid(xx,i+1,1)="" and Mid(xx,i+2,1)<>"0" then
        (
        xx :
=Left (xx,i )+Replace(xx,Mid(xx,i+1,1) ,"" ,i+1 , 1);
        )
       
else
        (
        i :
= i-1;
        xx :
=Left (xx,i )+Replace(xx,Mid(xx,i+1,2) ,"" ,i+1 , 1);
        )
    );
    i:
=i+1;
    z:
=length(xx);
);

xx :
= Replace(xx,"0","");
xx :
= Replace(xx,"1","");
xx :
= Replace(xx,"2","");
xx :
= Replace(xx,"3","");
xx :
= Replace(xx,"4","");
xx :
= Replace(xx,"5","");
xx :
= Replace(xx,"6","");
xx :
= Replace(xx,"7","");
xx :
= Replace(xx,"8","");
xx :
= Replace(xx,"9","");
xx :
= xx +""+test;

界面代码:

///<summary>
       
/// 大写显示金额
       
///</summary>
       
///<param name="value"></param>

        publicvoid UpperAccount(decimal value)
       
{
           
if (value ==0)
               
return;
           
string strValue = value.ToString();
           
if (!strValue.Contains("."))
           
{
                strValue
+=".00";
            }

           
string strResult =string.Empty;
           
int z, i;
            strValue
= strValue.Replace(".", "");
            z
= strValue.Length;
           
for (i = z; i >=1; i--)
           
{
               
string temp = strValue.Substring(z - i, 1);
               
switch (i)
               
{
                   
case12: strResult += temp +""; break;
                   
case11: strResult += temp +"亿"; break;
                   
case10: strResult += temp +""; break;
                   
case9: strResult += temp +""; break;
                   
case8: strResult += temp +""; break;
                   
case7: strResult += temp +""; break;
                   
case6: strResult += temp +""; break;
                   
case5: strResult += temp +""; break;
                   
case4: strResult += temp +""; break;
                   
case3: strResult += temp +""; break;
                   
case2: strResult += temp +""; break;
                   
case1: strResult += temp +""; break;
                }

            }

            z
= strResult.Length;
           
while (i < z)
           
{
               
string temp = strResult.Substring(i, 1);
               
if (temp =="0"&& i ==0)
               
{
                    i
++;
                   
continue;
                }

               
elseif (temp =="0")
               
{
                   
if (strResult.Substring(i -2, 1) !="0"&& (strResult.Substring(i +1, 1) =="亿"|| strResult.Substring(i +1, 1) ==""|| strResult.Substring(i +1, 1) ==""))
                   
{
                        strResult
= strResult.Remove(i, 1);
                    }

                   
elseif (strResult.Substring(i -2, 1) !="0"&& i +2< strResult.Length && strResult.Substring(i +2, 1) !="0")
                   
{
                        strResult
= strResult.Remove(i +1, 1);
                    }

                   
elseif (strResult.Substring(i +1, 1) ==""&& strResult.Substring(i +2, 1) !="0")
                   
{
                        strResult
= strResult.Remove(i +1, 1);
                    }

                   
else
                   
{
                        i
--;
                        strResult
= strResult.Remove(i +1, 2);
                    }

                }

                i
++;
                z
= strResult.Length;
            }

            strResult
= strResult.Replace("0", "");
            strResult
= strResult.Replace("1", "");
            strResult
= strResult.Replace("2", "");
            strResult
= strResult.Replace("3", "");
            strResult
= strResult.Replace("4", "");
            strResult
= strResult.Replace("5", "");
            strResult
= strResult.Replace("6", "");
            strResult
= strResult.Replace("7", "");
            strResult
= strResult.Replace("8", "");
            strResult
= strResult.Replace("9", "");
            lblAccount.Text
= strResult +"";
        }

转载于:https://www.cnblogs.com/gaomq/archive/2012/07/02/cryscript.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值