最近在用Reporting Service拉報表時,碰到需要在報表上顯示民國格式的問題,找了一下資料發現其實可以在欄位的運算式中作簡單的運算及格式轉換,甚至還有Regex的功能呢!
設定方式如下:
選擇你要設定的欄位,按右鍵選擇屬性後,會顯示「文字方塊屬性」對話視窗,在值這個欄位右邊有個「fx」圖示,點選進去就可以開始編輯你的運算式了。
舉例來說,我要顯示印表日期的民國年月日,如97/07/10 這種格式,我的運算式如下,先將年取出來減掉1911後轉成字串,再加上後面的月和日,輕鬆搞定!
CStr(Year(Globals.ExecutionTime) - 1911 ) + Format(Globals.ExecutionTime, "/MM/dd")
其他還有很多種變化方式,MSDN文件其實解說得蠻詳細的,除了簡單的格式轉換,還可以判斷是否甚至取Regex(抱歉我實在是不知道怎麼翻這個詞),下面是範例:
使用 Replace 函數,將欄位中十位數電話號碼的格式從 425-555-8080 變更為 (425) 555-8080:
System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
如果只是想要針對日期作一下格式轉換,請參考下面幾種方式
Format(Globals.ExecutionTime, "D") => 2008/7/10
Format(Globals.ExecutionTime, "yyyy-MM-dd") => 2008-07-10
Year(Globals.ExecutionTime)=>年
Month(Globals.ExecutionTime)=>月
Date(Globals.ExecutionTime)=>日
MSDN範例中甚至還提到,可以在報表中自訂函數後呼叫,如果運算式太複雜無法一行搞定,不妨試試這種方式!
沒有留言:
張貼留言