從包含名稱/值組的資料集傳回符合指定之名稱的值組。
注意
您可以在報表產生器以及 SQL Server Data Tools 的報表設計師中建立和修改報表定義 (.rdl)。 每種撰寫環境都會提供不同的方式來建立、開啟和儲存報表與相關的項目。 如需詳細資訊,請參閱在網路上 microsoft.com 在 報表設計師 和 Report Builder (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
。
資料集 (dataset)
指定報表中資料集名稱的常數。 例如,"ContactInformation"。
傳回
傳回 VariantArray
或在沒有相符項目時傳回 Nothing
。
備註
使用 LookupSet
可從具有一對多關係之名稱/值組的指定資料集中擷取一組值。 例如,如果是資料表中的客戶識別碼,您可以使用 LookupSet
從未繫結至資料區的資料集中,擷取該客戶的所有相關電話號碼。
LookupSet
會執行下列動作:
評估目前範圍中的來源運算式。
根據指定之資料集的定序,在已經套用篩選之後針對指定之資料集的每一個資料列評估目的地運算式。
在每一個符合來源運算式和目的地運算式的項目上,針對資料集中的該資料列評估結果運算式。
傳回結果運算式值的集合。
若要從具有指定名稱之名稱/值組 (具有一對一關聯性) 的資料集中擷取單一值,請使用 Lookup 函數 (報表產生器和 SSRS)。 若要呼叫 Lookup
一組值,請使用Multilookup 函式 (Report Builder 和 SSRS) 。
適用以下限制:
當套用所有篩選運算式之後,便會評估
LookupSet
。只支援一層的查閱。 來源、目的地或結果運算式不能包含查閱函數的參考。
來源和目的地運算式必須評估為相同的資料類型。
來源、目的地和結果運算式無法包含報表或群組變數的參考。
LookupSet
不能當做下列報表項目的運算式使用:資料來源的動態連接字串。
資料集中的導出欄位。
資料集中的查詢參數。
資料集中的篩選。
報表參數。
Report.Language 屬性。
如需詳細資訊,請參閱彙總函式參考 (報表產生器和 SSRS) 和總計、彙總與內建集合的運算式範圍 (報表產生器和 SSRS)。
範例
在下列範例中,假設資料表繫結至一個資料集,此資料集包含銷售領域識別碼 TerritoryGroupID。 另一個資料集 "Stores" 包含領域中所有商店的清單,並包含領域識別碼 ID 和 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 函數複製到報表定義中的程式碼區塊。 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)