国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

RDLC報表中使用自定義函數

2023-05-17 11:41:59
字體:
來源:轉載
供稿:網友

在RDLC中,可以使用自定義方法來擴充報表功能。比如常見的,把數字轉換為大寫中文的需求。按如下方法操作。

1、在報表空白處先一點,確保沒點中任何報表對象。然后點擊菜單欄上的“報表”。

選“報表屬性”,在彈出的小窗口上,切換到“代碼”標簽頁。

在文本框內輸入你的函數,我們這里輸入了一個CNMoney函數。

注意:

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

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

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

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

 其他報表中要用到該方法,需在報表中創建同樣的代碼段。

2、在報表上拖一個文本框,在上面點右鍵,選“表達式”,在彈出的表達式界面上,輸入

code.CNMoney(16)

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

下圖為操作流程示意

下面為文中用到的函數體,可在項目中實際使用。

  1. '#############################################################################     
  2. '貨幣轉換為中文漢字表述     
  3. '     
  4. '函數名稱:CNMoney     
  5. '參數:ls     
  6. '返回值:轉換后的字符串     
  7. '     
  8. '整理人:阿泰     
  9. '版本歷史     
  10. '2010-04-20:首次編譯,修正0參數,修正小于10的值不能正常顯示的BUG     
  11. '     
  12. '本文函數來源于 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 = "負"     
  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    

如果函數有錯誤,在編譯時會出現類似的提示信息

可根據提示進行修正

注:本文為在報表中使用自定義函數的方法之一,之后有時間補充其他方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定兴县| 从江县| 龙门县| 红桥区| 个旧市| 壤塘县| 漾濞| 鹿邑县| 台中县| 临海市| 秭归县| 隆昌县| 固镇县| 九龙城区| 东丽区| 远安县| 北流市| 乌苏市| 马尔康县| 大方县| 天台县| 大姚县| 犍为县| 彩票| 邹平县| 景泰县| 烟台市| 龙里县| 扎鲁特旗| 汶上县| 垦利县| 永善县| 西乡县| 吴堡县| 雷州市| 吉安市| 左贡县| 博爱县| 晋宁县| 和政县| 武清区|