a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

RDLC報(bào)表中使用自定義函數(shù)

2023-05-17 11:41:59
字體:
供稿:網(wǎng)友

在RDLC中,可以使用自定義方法來擴(kuò)充報(bào)表功能。比如常見的,把數(shù)字轉(zhuǎn)換為大寫中文的需求。按如下方法操作。

1、在報(bào)表空白處先一點(diǎn),確保沒點(diǎn)中任何報(bào)表對象。然后點(diǎn)擊菜單欄上的“報(bào)表”。

選“報(bào)表屬性”,在彈出的小窗口上,切換到“代碼”標(biāo)簽頁。

在文本框內(nèi)輸入你的函數(shù),我們這里輸入了一個(gè)CNMoney函數(shù)。

注意:

(1)嵌入代碼中的方法必須以 Microsoft Visual Basic 語法進(jìn)行編寫

(2)代碼塊可以包含多個(gè)方法。

(3)無法向函數(shù)傳遞數(shù)據(jù)值集,不支持自定義聚合。一般用于簡單數(shù)據(jù)類型。

(4)此方法可在該報(bào)表中多次使用,但是不能脫離報(bào)表使用。即不能在報(bào)表中共享這一函數(shù)。

 其他報(bào)表中要用到該方法,需在報(bào)表中創(chuàng)建同樣的代碼段。

2、在報(bào)表上拖一個(gè)文本框,在上面點(diǎn)右鍵,選“表達(dá)式”,在彈出的表達(dá)式界面上,輸入

code.CNMoney(16)

注意:以code+.+函數(shù)名稱的方式引用之前定義的方法

下圖為操作流程示意

下面為文中用到的函數(shù)體,可在項(xiàng)目中實(shí)際使用。

  1. '#############################################################################     
  2. '貨幣轉(zhuǎn)換為中文漢字表述     
  3. '     
  4. '函數(shù)名稱:CNMoney     
  5. '參數(shù):ls     
  6. '返回值:轉(zhuǎn)換后的字符串     
  7. '     
  8. '整理人:阿泰     
  9. '版本歷史     
  10. '2010-04-20:首次編譯,修正0參數(shù),修正小于10的值不能正常顯示的BUG     
  11. '     
  12. '本文函數(shù)來源于 feng442624978,原帖地址:     
  13. 'http://topic.csdn.net/u/20100303/15/0f0ceca7-d29d-4269-b0f5-17ea09d0f139.html     
  14. '#############################################################################     
  15.      
  16. Shared Function CNMoney(ls As LongAs String     
  17.     Dim dx_sz As String     
  18.     Dim dx_dw As String     
  19.     Dim str_int As String     
  20.     Dim str_dec As String     
  21.     Dim dx_str As String     
  22.     Dim fu As String     
  23.     Dim a As String     
  24.     Dim b As String     
  25.     Dim c As String     
  26.     Dim d As String     
  27.     Dim b2 As String     
  28.     Dim num_int As Long    
  29.     Dim num_dec As Long    
  30.     Dim len_int As Long    
  31.     Dim i As Long    
  32.     Dim a_int As Long    
  33.     Dim pp As Long    
  34.      
  35.     dx_sz = "零壹貳叁肆伍陸柒捌玖"     
  36.     dx_dw = "萬仟佰拾億仟佰拾萬仟佰拾圓"     
  37.          
  38.     If ls = 0 Then     
  39.         CNMoney = "零圓整"     
  40.         Exit Function     
  41.     End If     
  42.          
  43.     If ls < 0 Then     
  44.         ls = Abs(ls)     
  45.         fu = "負(fù)"     
  46.     Else     
  47.         fu = ""     
  48.     End If     
  49.      
  50.     dx_str = CStr(ls)     
  51.     dx_str = Replace(dx_str, "¥""")     
  52.     dx_str = Replace(dx_str, ",""")     
  53.     If (ls >= 0) And (ls < 1) Then dx_str = "0" + dx_str     
  54.          
  55.     pp = InStr(dx_str, ".")     
  56.     If pp > 0 Then     
  57.         str_int = Mid(dx_str, 1, InStr(dx_str, ".") - 1)     
  58.     Else     
  59.         str_int = dx_str     
  60.     End If     
  61.      
  62.     num_int = CLng(str_int)     
  63.      
  64.     If (ls > 0) And (ls < 1) Then     
  65.         num_dec = ls * 100     
  66.     Else     
  67.         num_dec = (ls - num_int) * 100     
  68.     End If     
  69.      
  70.     str_dec = CStr(num_dec)     
  71.     str_dec = Replace(str_dec, "¥""")     
  72.      
  73.     len_int = Len(str_int)     
  74.     dx_str = ""     
  75.     For i = 1 To len_int     
  76.         a = Mid(str_int, i, 1)     
  77.         a_int = CLng(a)     
  78.         b = Mid(dx_sz, (a_int + 1), 1)     
  79.         c = Mid(dx_dw, (13 - len_int + i), 1)     
  80.         If dx_str <> "" Then     
  81.             d = Mid(dx_str, Len(dx_str) - 1, 1)     
  82.         Else     
  83.             d = ""     
  84.         End If     
  85.         If (b = "零"And ((d = "零"Or (b = b2) Or (c = "圓"Or (c = "萬"Or (c = "億")) Then b = ""     
  86.         If (a = "0"And (c <> "圓"And (c <> "萬"And (c <> "億"Then c = ""     
  87.         If ((c = "圓"Or (c = "萬"Or (c = "億")) And (d = "零"And (a = "0"Then     
  88.             dx_str = Mid(dx_str, 1, Len(dx_str) - 2)     
  89.             d = Mid(dx_str, Len(dx_str) - 1, 2)     
  90.             If ((c = "圓"And (d = "萬")) Or ((c = "萬"And (d = "億")) Then c = ""     
  91.         End If     
  92.         dx_str = dx_str + b + c     
  93.         b2 = b     
  94.     Next i     
  95.      
  96.     '處理金額小于1的情況     
  97.     If Len(dx_str) < 2 Then dx_str = ""     
  98.     If (num_dec < 10) And (ls > 0) Then     
  99.         a_int = CLng(str_dec)     
  100.         b = Mid(dx_sz, (a_int + 1), 1)     
  101.         If num_dec = 0 Then dx_str = dx_str + "整"     
  102.         If num_dec > 0 Then dx_str = dx_str + "零" + b + "分"     
  103.     End If     
  104.     If num_dec >= 10 Then     
  105.         a_int = CLng(Mid(str_dec, 1, 1))     
  106.         a = Mid(dx_sz, (a_int + 1), 1)     
  107.         a_int = CLng(Mid(str_dec, 2, 1))     
  108.         b = Mid(dx_sz, (a_int + 1), 1)     
  109.         If a <> "零" Then a = a + "角"     
  110.         If b <> "零" Then b = b + "分" Else b = ""     
  111.         dx_str = dx_str + a + b     
  112.     End If     
  113.              
  114.     dx_str = fu + dx_str     
  115.      
  116.     dx_str = Replace(dx_str, "零億""億")     
  117.     dx_str = Replace(dx_str, "零萬""萬")     
  118.     dx_str = Replace(dx_str, "零千""千")     
  119.     dx_str = Replace(dx_str, "零圓""圓")     
  120.      
  121.      
  122.     CNMoney = dx_str     
  123. End Function    

如果函數(shù)有錯(cuò)誤,在編譯時(shí)會(huì)出現(xiàn)類似的提示信息

可根據(jù)提示進(jìn)行修正

注:本文為在報(bào)表中使用自定義函數(shù)的方法之一,之后有時(shí)間補(bǔ)充其他方法。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: av网站在线免费观看 | 青青草视频免费观看 | 精品国产91乱码一区二区三区 | 国产激情免费 | 日本一区二区精品视频 | 中文字幕色婷婷在线视频 | 91在线观 | 超碰在线观看97 | 欧美精品在线观看 | 久久一级| 色精品 | 一区二区欧美在线 | 欧美日韩中文字幕在线 | 国产毛片在线 | 一区二区三区在线播放 | 视频一区在线播放 | 国产亲子乱弄免费视频 | 欧美2区| 欧美视频网站 | 农村妇女毛片精品久久久 | 天天天天爽 | 日日操视频 | 国产在线不卡一区 | 欧美一性一交 | 欧洲精品一区二区 | 一区免费观看 | xx视频在线观看 | 午夜精品久久久久久久久久久久 | 亚洲国产一区二区在线 | 99久久婷婷国产综合精品电影 | 久久精品国产99国产 | 国产视频一区二区三区四区 | 国产精品欧美一区二区 | 国产精品视频一区二区三区 | 国产激情久久久久影院小草 | 亚洲成a人v欧美综合天堂麻豆 | 欧美精品一区二区三区在线四季 | 久久久久久亚洲精品中文字幕 | 四影虎影ww4hu55.com | 综合久久99 | 欧美一区二区三区免费在线观看 |