共用方式為


在運算式中使用自訂程式碼參考 (報表產生器 2.0)

您可以加入報表中內嵌之自訂程式碼的參考。請將內嵌程式碼用在自訂常數、複雜函數或在單一報表內重複使用的函數上。

對於具有時間感應的計算 (在執行階段時會評估一次,而您想在整個報表處理期間維持相同的值),則請考慮是否要使用報表或群組變數。如需詳細資訊,請參閱<在運算式中使用報表和群組變數集合參考 (報表產生器 2.0)>。

自訂程式碼可能會包含新的自訂常數、變數、函數或副程式。您可以包含內建集合 (例如 Parameters 集合) 的唯讀參考,但是不能將報表資料值集傳遞至自訂函數 (尤其是不支援自訂彙總)。

內嵌程式碼

若要將內嵌程式碼加入至報表,請使用 [報表屬性] 對話方塊的 [程式碼] 頁面。您建立的程式碼區塊可以包含多個方法。內嵌程式碼中的方法必須用 MicrosoftVisual Basic 來撰寫,且必須以執行個體為基礎。 報表處理器會自動加入 System.ConvertSystem.Math 命名空間的參考。在報表產生器 2.0 中,不支援其他組件參考的參考。

內嵌程式碼裡的方法,可透過全域定義的 Code 成員使用。您可藉由參考 Code 成員與方法名稱,來存取這些方法。下列範例會呼叫 ToUSD 方法,這個方法會將 StandardCost 欄位的值轉換成美金值:

=Code.ToUSD(Fields!StandardCost.Value)

若要參考自訂程式碼中的內建集合,請加入內建 Report 物件的參考:

=Report.Parameters!Param1.Value

下列範例顯示定義部分自訂常數及變數的方法。

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

如需有關內建物件集合和初始化的詳細資訊,請參閱<在運算式中使用全域集合>。

從自訂程式碼參考參數的範例

您可以透過報表定義之程式碼區塊內或您所提供之自訂組件內的自訂程式碼,參考全域參數集合。此參數集合是唯讀的,而且沒有任何公用 Iterator。您不能使用 Visual BasicFor Each 建構來逐步執行此集合。您必須先知道報表定義中所定義的參數名稱,才可以在程式碼中參考它。但是,您可以逐一查看多重值參數的所有值。如需詳細資訊,請參閱<在運算式中使用自訂程式碼參考 (報表產生器 2.0)>。

下表包含從自訂程式碼參考內建 Parameters 集合的範例:

說明

運算式中的參考

自訂程式碼定義

將整個全域參數集合傳遞給自訂程式碼。

這個函數會傳回特定報表參數 MyParameter 的值。

=Code.DisplayAParameterValue(Parameters)

Public Function DisplayAParameterValue(

ByVal parameters as Parameters) as Object

Return parameters("MyParameter").Value

End Function

將個別參數傳遞給自訂程式碼。

這個範例會傳回所傳入的參數值。如果該參數為多重值參數,則傳回字串會是所有值的串連。

=Code.ShowParametersValues(Parameters!DayOfTheWeek)

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String 
   If parameter.IsMultiValue then
      s = "Multivalue: " 
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " " 
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

自訂組件

在報表產生器 2.0 中,只有報表伺服器才支援自訂組件。如需有關在報表伺服器上安裝程式碼之後存取程式碼的詳細資訊,請參閱《SQL Server 線上叢書》中 Reporting Services 文件集的<透過運算式存取自訂組件>。