共用方式為


LookupSet 函式 (報表產生器及 SSRS)

從包含名稱/值組的數據集傳回指定名稱的相符值集合。

備註

您可以在報表產生器及 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)