共用方式為


在運算式中使用自訂程式碼參考 (Reporting Services)

更新: 2006 年 4 月 14 日

您可以將自訂函數加入至報表,或者將參考加入至外部組件中的函數。報表伺服器會自動新增 Microsoft.VisualBasicSystem.ConvertSystem.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)
ms155798.note(zh-tw,SQL.90).gif附註:
在報表設計師中,自訂組件載入一次之後,就要等到您關閉 Visual Studio 時才會卸載。如果您要預覽報表,請變更報表中使用的自訂組件,然後再次預覽報表,在第二次預覽中將不會顯示變更。若要重新載入組件,請關閉及重新開啟 Visual Studio,然後預覽報表。

請參閱

其他資源

在 Reporting Services 中使用運算式

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

新增內容:
  • 新增範例。

2005 年 12 月 5 日

新增內容:
  • 新增全域集合之報表物件的參考。