前情概要:
我們在實際項目中肯定會遇到這樣或者那樣的細小的業務需求。比如接下來我要描述的這個業務需求。在寫一些國外的業務時,總會遇到英文書寫規範的問題。我們Query到一組數據。我們要對它進行分隔顯示。XXField/XXField/XXField這樣的格式。但是客戶說啥就是啥,他們認爲這樣看不清,想要這樣的:
XXField
XXField
XXField
我們嘿嘿一笑說馬上改(改你MDB)。
然後過了兩天客戶說不好看,再改:
XXField ; XXField ; XXField
分號前後帶空格的。So帶出來一個問題,我們如何在Report裏自定義Function完成我們的業務,在這裏我以例子爲業務需求我們去練習一下。
Report 搭建:
新建工程 新建RDL 鏈接Server Query 數據(SQL或者FetchXML)。
如下:
我們看一眼完成好的Report樣式:
無論是哪種形式我們的業務處理的核心是Cared By這個字段的Value。Query讀出Cared By是一個String類型。那麼就好辦了。如果我們處理一個字符串無非就是定義一個返回值爲String的Function。傳參返回Result。
我們測試的代碼可以在Visual Studio下新建一個VB工程。寫入我們的VB Code。返回成功即可。
Sub Main()
'測試數據currentStr
Dim currentStr As String
currentStr = "1;2;2;3;4"
'調用函數 調試返回字符串是否正確
StringBuilder(currentStr)
End Sub
'傳入字符串 返回另一字符串
Public Function StringBuilder(ByVal strValue As String) As String
Dim a() As String
Dim currentStr As String
Dim resultValue As String
currentStr = strValue
resultValue = ""
a = Split(currentStr, ";")
resultValue = Join(a, " ; ")
Return resultValue
End Function
代碼裏有兩個函數 Split()和Join().一個是拆分字符串,一個是拼接字符串。可以查看官方API查看具體的用法。代碼很簡單但是讓客戶很滿意,一頓吹牛逼這個有多難,給客戶整的一愣一愣的其實分分鐘的事。即使遇到再困難的業務邏輯我們也可以通過自定義Function來解決不是嗎?
Step1:右鍵Report 空白處選擇Report Properties。
Step2:Code選項下把代碼拷進來。
Step 3:右鍵數據顯示哪一格選擇Expression。
Step4:調用我們自定義Function。它的寫法是Code.XXX().下面顯示紅色是一個BUG,只要你的函數在VS下編譯通過就沒有問題。調用完成Save-Run Report就是第一張圖所示效果。
Attention:
1.我在這裏只是舉例說明一個業務。遇到的可能是處理更復雜的統計報表,遇到的是其他數據類型的處理以此類推。
2.這個例子解決的是當我們無法通過簡單語法表示我們所要的數據可通過自定義Function來解決。前提是你的編程功底紮實能夠寫的出VB語言。(我從來沒學過VB只不過會點兒C和C#以及前臺,看了看API就糊弄出來了,希望不要跟我學,要想做好Report系統的學習VB還是有必要的)
3.明確處理的數據類型,避免“非戰鬥損失”。
4.Report處理的關鍵在於Query,注意Query數據的正確性很重要。
null。。。