在運算式中使用自訂程式碼參考 (Reporting Services)
更新: 2006 年 4 月 14 日
您可以將自訂函數加入至報表,或者將參考加入至外部組件中的函數。報表伺服器會自動新增 Microsoft.VisualBasic、System.Convert 及 System.Math 組件的參考。您可以使用 [報表屬性] 對話方塊,或者報表定義裡的 CodeModules 元素,以參考其他的組件。
[報表屬性] 對話方塊也可以用來定義新的自訂函數。若要在報表定義中定義自訂函數,請使用 Code 元素。但是,不能將資料值集傳遞至函數 (尤其是不支援自訂彙總)。
您可以撰寫自訂程式碼,這會用於整個報表的運算式。自訂程式碼有兩種方式:在報表中內嵌程式碼,或在自訂組件中參考方法。針對複雜函數或在單一報表中會使用多次的函數,請使用內嵌程式碼。使用程式碼組件,即可在單一位置維護程式碼,並可跨多個報表共用程式碼組件。
內嵌程式碼
若要在報表內使用程式碼,請將程式碼區塊加入報表中。此程式碼區塊可以包含多個方法。內嵌程式碼裡的方法必須以 Microsoft Visual Basic 撰寫,而且必須以執行個體為基礎。
如需有關如何將程式碼加入至報表的詳細資訊,請參閱<如何:將程式碼加入至報表 (報表設計師)>。
內嵌程式碼裡的方法,可透過全域定義的 Code 成員使用。您可藉由參考 Code 成員與方法名稱,來存取這些方法。下列範例會呼叫 ToUSD 方法,這個方法會將 StandardCost 欄位中的值轉換為貨幣值:
=Code.ToUSD(Fields!StandardCost.Value)
若要參考自訂程式碼中的全域集合,請加入內建 Report 物件的參考:
=Report.Parameters!Param1
下列範例顯示定義部分自訂常數及變數的方法。
Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456
雖然自訂常數不會顯示在運算式編輯器的 [常數] 檢視中 (該檢視只會顯示內建的常數),但是,如下列範例所示,您可以從任何運算式新增自訂常數的參考。在運算式中,會將自訂常數視為 Variant。
=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion
下列範例包含 FixSpelling 函數的程式碼參考與程式碼實作,這個函數會將 SubCategory 欄位中所有出現的 Bike
文字,以 Bicycle
取代。
=Code.FixSpelling(Fields!SubCategory.Value)
將下列程式碼內嵌在報表定義後,會顯示 FixSpelling 方法的實作。此自訂程式碼第一次執行時,會出現一個訊息方塊會顯示被替代的文字。此範例告訴您如何參考 Microsoft .NET Framework StringBuilder 類別和 System.Windows.Forms.MessageBox 類別。您必須為 System.Windows.Forms 新增報表屬性的參考。如需詳細資訊,請參閱<如何:將程式碼加入至報表 (報表設計師)>和<如何:將組件參考加入至報表 (報表設計師)>。
Dim firstTime As Boolean = True
Public Function FixSpelling(ByVal s As String) As String
Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Bike") Then
strBuilder.Replace("Bike", "Bicycle")
If firstTime Then
System.Windows.Forms.MessageBox.Show(strBuilder.ToString())
' or MsgBox(strBuilder.ToString())
firstTime = False
End If
Return strBuilder.ToString()
Else : Return s
End If
End Function
如需有關全域物件集合和初始化的詳細資訊,請參閱<在運算式中使用全域集合>和<Initializing Custom Assembly Objects>。
自訂組件
若要在報表中使用自訂組件,您必須先建立組件,並設定報表設計師可以使用該組件,在報表中加入對該組件的參考,然後在報表中使用運算式來參考該組件內含的方法。報表部署至報表伺服器時,您也必須將自訂組件部署至報表伺服器。
如需有關建立自訂組件,並讓 Reporting Services 可以使用組件的資訊,請參閱<Using Custom Assemblies with Reports>。如需有關如何將參考加入至報表的指示,請參閱<如何:將組件參考加入至報表 (報表設計師)>。
若要在運算式中參考自訂程式碼,您必須在組件中呼叫類別的成員。該如何完成,取決於此方法為靜態或以執行個體為基礎。報表內的全域都可以使用自訂組件內的靜態方法。您可以藉著指定命名空間、類別和方法名稱,來存取運算式中的靜態方法。下列範例會呼叫 ToGBP 方法,這個方法會將 StandardCost 欄位值從美元轉換為英鎊:
=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)
以執行個體為基礎的方法,可透過全域定義的 Code 成員來使用。您可以藉由參考 Code 成員,然後參考執行個體與方法名稱,來存取這些方法。下列範例會呼叫 ToEUR 執行個體方法,這個方法會將 StandardCost 欄位值從美元轉換為歐元:
=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)
附註: |
---|
在報表設計師中,自訂組件載入一次之後,就要等到您關閉 Visual Studio 時才會卸載。如果您要預覽報表,請變更報表中使用的自訂組件,然後再次預覽報表,在第二次預覽中將不會顯示變更。若要重新載入組件,請關閉及重新開啟 Visual Studio,然後預覽報表。 |
請參閱
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|