日韩在线观看电影_四虎一级片|HD中文字幕在线播放,午夜免费久久,国产高清一区二区,亚洲天堂狠狠干

易寶電子貿易管理軟件論壇

注冊

 

發新話題 回復該主題

[分享] 水晶報表打印格式金額轉成中文大寫函數 [復制鏈接]

1#
銀光圖片
在水晶報表,公式工作室中新建報表自定義函數,函數內容如下:

Function (stringvar number)
(
  stringvar str1 := "零壹貳叁肆伍陸柒捌玖";            //0-9所對應的漢字
  stringvar str2 := "萬仟佰拾億仟佰拾萬仟佰拾元角分"; //數字位所對應的漢字
  stringvar str3 := "";    //從原num值中取出的值
  stringvar str4 := "";    //數字的字符串形式
  stringvar str5 := "";  //人民幣大寫金額形式
  numbervar i:=0;    //循環變量
  numbervar j:=0;    //num的值乘以100的字符串長度
  stringvar ch1 := "";    //數字的漢語讀法
  stringvar ch2 := "";    //數字位的漢字讀法
  numbervar nzero := 0;  //用來計算連續的零值是幾個
  numbervar temp;            //從原num值中取出的值

  numbervar num := Round(Abs(tonumber(number)),2);    //將num取絕對值并四舍五入取2位小數
  str4 := totext(tonumber(num*100),0);        //將num乘100并轉換成字符串形式
  str4:=replace(str4,",","");
  j := Length(str4);      //找出最高位
  if j > 15 then
    "字符串太長"
  else
  (
      str2 := mid(str2,15-j+1);   //取出對應位數的str2的值。如:200.55,j為5所以str2=佰拾元角分

      //循環取出每一位需要轉換的值
      for i:=1 to j step 1 do
      (
          str3 :=mid(str4,i,1);          //取出需轉換的某一位的值
          temp := int(tonumber(str3));      //轉換為數字
          if (i <> (j-3) and i <> (j-7) and i <> (j-11) and i <> (j-15))  then
          (    
               //當所取位數不為元、萬、億、萬億上的數字時
               if (str3 = "0") then
               (
                   ch1 := "";
                   ch2 := "";
                   nzero := nzero + 1;
               )
               else
               (
                  if(str3 <> "0" and nzero <> 0) then
                  (
                      ch1 := "零" + mid(str1,temp*1+1,1);
                      ch2 := mid(str2,i,1);
                      nzero := 0;
                  )
                  else
                  (
                      ch1 := mid(str1,temp*1+1,1);
                      ch2 := mid(str2,i,1);
                      nzero := 0;
                   )
                )
           )
           else
           (
                //該位是萬億,億,萬,元位等關鍵位  
                if (str3 <> "0" and nzero <> 0)  then
                (
                    ch1 := "零" + mid(str1,temp*1+1,1);
                    ch2 := mid(str2,i,1);
                    nzero := 0;
                )
                else
                (
                    if (str3 <> "0" and nzero = 0) then
                    (
                         ch1 := mid(str1,temp*1+1,1);
                         ch2 := mid(str2,i,1);
                         nzero := 0;
                     )
                    else
                    (
                         if (str3 = "0" and nzero >= 3) then
                         (
                             ch1 := "";
                             ch2 := "";
                             nzero := nzero + 1;
                          )
                          else
                          (
                              if (j >= 11)  then
                              (
                                  ch1 := "";
                                  nzero := nzero + 1;
                              )
                              else
                              (
                                  ch1 := "";
                                  ch2 := mid(str2,i,1);
                                  nzero := nzero + 1;
                              )
                          )
                      )
                  )
             );

             if (i = (j-11) or i = (j-3)) then
             (  
                if(mid(str4,j,1)="0" and mid(str4,j-1,1)="0" and mid(str4,j-2,1)="0" and mid(str4,j-3,1)="0") then
                (
                    ch2:='元';////460000.00-肆拾陸萬拾整
                )
                else if(j=6 and mid(str4,j,1)="0" and mid(str4,j-1,1)="0" and mid(str4,j-3,1)="0") then
                (
                    ch2:='';////1408.00-壹仟肆佰拾零捌元整
                )
                else if((j=5 or j=6) and mid(str4,j,1)="0" and mid(str4,j-1,1)<>"0" and mid(str4,j-2,1)="0") then
                (
                    ch2:=ch2+'元';////3590.40-叁仟伍佰玖拾零肆角/770.70-柒佰柒拾零柒角
                )
                else if(j=7 and mid(str4,j-3,1)="0" and mid(str4,j-2,1)<>"0") then
                (
                    ch2:='';////14704.00-壹萬肆仟柒佰拾零肆元整
                )
                else
                (
                    //如果該位是億位或元位,則必須寫上
                    ch2 := mid(str2,i,1);
                )
             ) ;
             if(j=8 and i=3 and mid(str4,j-5,1)="0" and mid(str4,j-6,1)="0") then
             (
                ch2:='萬';////100800.00-壹拾零捌佰元整
              );

             str5 := str5 + ch1 + ch2;            

             if (i = j-1 and str3 = "0")  then
             (
                ////80.00-捌拾整
                if(InStr(str5, '元') = 0) then
                (
                    str5 := str5 + '元';
                );
                //最后一位(分)為0時,加上“整”
                str5 := str5 + '整';
             ) ;
       );




         if (num = 0) then
         (
             str5 := "零元整";
         ) ;  
          str5
    )
)
金額中文大寫.jpg (, 下載次數:0)

(2016/6/28 10:05:02 上傳)

金額中文大寫.jpg

最后編輯huangyf 最后編輯于 2016-06-28 10:05:02
分享 轉發
TOP
發新話題 回復該主題