從包含名稱/值組的數據集傳回指定名稱的相符值集合。
備註
您可以在報表產生器及 SQL Server Data Tools 的報表設計師中建立和修改報表定義 (.rdl)。 每個撰寫環境提供不同的方式來建立、開啟及儲存報表和相關專案。 如需詳細資訊,請至 microsoft.com 網站上查看 報表設計師和報表產生器 (SSRS) 的報表設計。
語法
LookupSet(source_expression, destination_expression, result_expression, dataset)
參數
source_expression
(Variant) 在目前範圍中評估的運算式,用來指定要查閱的名稱或鍵值。 例如: =Fields!ID.Value 。
destination_expression
(Variant)針對資料集中的每個資料列進行評估的運算式,並指定要比對的名稱或索引鍵。 例如: =Fields!CustomerID.Value 。
result_expression
(Variant) 針對數據集中數據列評估的表達式,其中 source_expression = destination_expression,指定要擷取的值。 例如: =Fields!PhoneNumber.Value 。
數據
常數,指定報表中的數據集名稱。 例如,“ContactInformation”。
返回
如果有相符的項目則傳回 VariantArray,如果沒有則傳回 Nothing。
備註
使用 LookupSet 從指定數據集擷取名稱/值組的一組值,其中具有一對多關聯性。 例如,對於數據表中的客戶標識符,您可以使用 LookupSet 從未系結至數據區域的數據集擷取該客戶的所有相關聯電話號碼。
LookupSet 執行下列動作:
評估目前範圍中的來源表達式。
根據指定數據集的定序,在套用篩選後,評估指定數據集中每一列的目的表達式。
針對來源表達式和目的地表達式的每個匹配項目,評估數據集中該列的結果表達式。
傳回結果表達式值的集合。
若要從名稱/值組數據集中根據指定名稱擷取單一值(其中符合1對1關聯性),請使用Lookup函式(報表生成器和SSRS)。 若要呼叫Lookup一組值,請使用 Multilookup 函式(報表產生器及 SSRS)。
適用以下限制:
LookupSet會在套用所有篩選表達式之後進行評估。僅支援一個層級的查閱。 來源、目的地或結果表達式不能包含查閱函式的參考。
來源和目的地表達式必須評估為相同的數據類型。
來源、目的地和結果表達式不能包含報表或群組變數的參考。
LookupSet無法做為下列報表項目的表示式:數據源的動態連接字串。
數據集中的計算欄位。
查詢數據集中的參數。
數據集中的篩選。
報表參數。
Report.Language 屬性。
如需詳細資訊,請參閱聚合函數參考(報表產生器及 SSRS)和總計、匯總和內建集合的運算式範圍(報表產生器及 SSRS)。
範例
在下列範例中,假設數據表系結至包含銷售領域標識碼 TerritoryGroupID 的數據集。 名為 「Stores」 的個別數據集包含區域內所有商店的清單,並包含區域標識碼和市集 StoreName 的名稱。
在下列表達式中,LookupSet 比較 「Stores」 資料集中的每個資料列的 TerritoryGroupID 值與 ID。 針對每個符合項目,該列中 StoreName 欄位的值會加入至結果集。
=LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores")
範例
因為 LookupSet 會傳回 物件的集合,所以您無法直接在文本框中顯示結果表達式。 您可以將集合中每個物件的值串連為字串。
使用 Visual Basic 函式 Join 從一組物件建立分隔字串。 使用逗號做為分隔符來結合單行中的物件。 在某些轉譯器中,您可以使用 Visual Basic 換行字元 (vbCrLF) 作為分隔符,以列出新行上的每個值。
下列表達式當做文本框的 Value 屬性使用時,會使用 Join 來建立清單。
=Join(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"),",")
範例
若為只轉譯數次的文字框,您可以選擇新增自定義程式代碼來產生 HTML,以在文字框中顯示值。 文本框中的 HTML 需要額外的處理,因此對於轉譯數千次的文字框來說,這不是不錯的選擇。
將下列 Visual Basic 函式複製到報表定義中的 Code 區塊。 MakeList 會採用 在 result_expression 中傳回的物件陣列,並使用 HTML 標記建置未排序的清單。 Length 會傳回物件數位中的項目數。
Function MakeList(ByVal items As Object()) As String
If items Is Nothing Then
Return Nothing
End If
Dim builder As System.Text.StringBuilder =
New System.Text.StringBuilder()
builder.Append("<ul>")
For Each item As Object In items
builder.Append("<li>")
builder.Append(item)
Next
builder.Append("</ul>")
Return builder.ToString()
End Function
Function Length(ByVal items as Object()) as Integer
If items is Nothing Then
Return 0
End If
Return items.Length
End Function
範例
若要產生 HTML,您必須呼叫 函式。 在文本框的 Value 屬性中貼上下列表示式,並將文字的標記類型設定為 HTML。 如需詳細資訊,請參閱將 HTML 新增至報表(報表產生器及 SSRS)。
=Code.MakeList(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"))
另請參閱
報表中的運算式用法 (報表產生器及 SSRS)
運算式範例 (報表產生器及 SSRS)
運算式中的資料類型 (報表產生器及 SSRS)
總計、匯總和內建集合的表達式範圍(報表產生器及 SSRS)