資料集欄位集合參考 (報表產生器及 SSRS)
報表中的每個數據集都包含一個 Fields 集合。 Fields 集合是資料集查詢所指定的欄位加上您建立之任何其他導出欄位的集合。 當您建立資料集之後,欄位集合會出現在 [報表資料] 窗格中。
運算式中的簡單欄位參考會在設計介面上顯示為簡單運算式。 例如,當您將 Sales
欄位從 [報表資料] 窗格拖曳到設計介面上的資料表資料格時,就會顯示 [Sales]
。 這代表在文字方塊 Value 屬性上設定的基礎運算式 =Fields!Sales.Value
。 當報表執行時,報表處理器會評估此運算式,並將資料來源中的實際資料顯示在資料表資料格內的文字方塊中。 如需詳細資訊,請參閱運算式 (報表產生器及 SSRS) 和資料集欄位集合 (報表產生器及 SSRS)。
注意
您可以在 sql Server Data Tools 的 報表產生器 和 報表設計師 中建立和修改報表定義 (.rdl)。 每個撰寫環境提供不同的方式來建立、開啟及儲存報表和相關專案。 如需詳細資訊,請參閱在web上設計 報表設計師和 報表產生器 (SSRS) 中的報表,網址為 microsoft.com。
顯示資料集的欄位集合
若要顯示欄位集合的個別值,請將每一個欄位拖曳到資料表詳細資料列,並執行報表。 資料表之詳細資料列或清單資料區中的參考會顯示資料集中每一個資料列的值。
若要顯示欄位的摘要值,請將每一個數值欄位拖曳到矩陣的資料區。 總計資料列的預設彙總函式為 Sum,例如 =Sum(Fields!Sales.Value)
。 您可以變更預設函數,以便能夠計算不同的總計。 如需詳細資訊,請參閱彙總函式參考 (報表產生器及 SSRS)。
若要將欄位集合的摘要值直接顯示在設計介面上的文字方塊中 (不屬於資料區的一部分),您必須將資料集名稱指定為彙總函式的範圍。 例如,如果是名為 SalesData
的資料集,下列運算式會針對 Sales
: =Sum(Fields!Sales,"SalesData")
欄位指定所有值的總計。
當您使用 [運算式] 對話方塊來定義簡單欄位參考時,可以在 [類別目錄] 窗格中選取 Fields 集合,並在 [欄位] 窗格中查看可用欄位的清單。 每個欄位都有數個屬性,包括 Value 和 IsMissing。 其餘的屬性會預先定義在擴充欄位屬性上,這些屬性可能可以提供給資料集使用 (視資料來源類型而定)。
偵測資料集欄位的 Null
若要偵測 null 的域值(Nothing
在 Visual Basic 中),您可以使用 函式 IsNothing
。 當下列運算式放置於資料表詳細資料列的文字方塊內時,運算式會測試 MiddleName
欄位,並在該值為 Null 時以 "No Middle Name" 文字替代,而當該值不是 Null 時則為欄位值本身:
=IIF(IsNothing(Fields!MiddleName.Value),"No Middle Name",Fields!MiddleName.Value)
在執行階段偵測動態查詢的遺漏欄位
Fields 集合內的項目預設會有兩個屬性:Value 和 IsMissing。 IsMissing p 屬性會指出在設計階段針對資料集所定義的欄位是否包含在執行階段擷取的欄位中。 例如,您的查詢可能會呼叫預存程序,其中的結果集會因為輸入參數而不同,或者您的查詢可能會是 SELECT * FROM
<資料表>(變更資料表定義的地方)。
注意
[遺漏] 會偵測設計階段與執行階段之間對於任何資料來源類型的資料集結構描述變更。 IsMissing 無法用來偵測多維度 Cube 中的空白成員,而且與 和NON EMPTY
的 MDX 查詢語言概念EMPTY
無關。
您可以在自訂程式碼中測試 IsMissing 屬性,以判斷結果集中是否有欄位存在。 由於 Visual Basic 會評估函式呼叫中的所有參數,因此您無法使用 Visual Basic 函數調用的IIF
SWITCH
表達式來測試其存在狀態,因為 Visual Basic 會評估函式呼叫中的所有參數,這會導致在評估遺漏的參考時發生錯誤。
控制遺漏欄位之動態資料行可見性的範例
若要設定一個運算式來控制在資料集中顯示欄位之資料行的可見性,您必須定義一個自訂程式碼函數,根據欄位是否遺漏來傳回布林值。 例如,如果此欄位遺漏,下列自訂程式碼函數會傳回 True,如果此欄位存在則傳回 False。
Public Function IsFieldMissing(field as Field) as Boolean
If (field.IsMissing) Then
Return True
Else
Return False
End If
End Function
若要使用此函數來控制資料行的可見性,請將此資料行的 Hidden 屬性設定為以下運算式:
=Code.IsFieldMissing(Fields!FieldName)
當欄位不存在時,便會隱藏此資料行。
控制遺漏欄位之文字方塊值的範例
若要使用您撰寫的文字來取代遺漏欄位的值,您必須撰寫自訂程式碼,使其在欄位遺漏時可傳回用來取代欄位值的文字。 例如,下列自訂程式碼函數會在欄位存在時傳回欄位的值,而當欄位不存在時,則傳回您指定為第二個參數的訊息:
Public Function IsFieldMissingThenString(field as Field, strMessage as String) as String
If (field.IsMissing) Then
Return strMessage
Else
Return field.Value
End If
End Function
若要在文字方塊中使用這個函數,請將下列運算式加入到 Value 屬性:
=Code.IsFieldMissingThenString(Fields!FieldName,"Missing")
此文字方塊會顯示欄位值或是您指定的文字。
使用擴充欄位屬性
擴充欄位屬性是資料處理延伸模組在欄位上所定義的其他屬性,此模組是由資料集的資料來源類型所決定。 擴充欄位屬性是預先定義的,或是資料來源類型所特有的。 如需詳細資訊,請參閱 Analysis Services 資料庫的擴充欄位屬性 (SSRS)。
如果您指定該欄位不支援的屬性,表達式會評估為 null
(Nothing
在 Visual Basic 中)。 如果數據提供者不支援擴充字段屬性,或者執行查詢時找不到欄位,則 屬性的值是 null
(在 Visual Basic 中為 ),而類型Integer
String
Object
屬性的值為零 (0)。Nothing
資料處理延伸模組可藉由最佳化包含這個語法的查詢來利用預先定義的屬性。