LookupSet 함수(보고서 작성기 3.0 및 SSRS)

이름/값 쌍을 포함하는 데이터 집합에서 지정된 이름과 일치하는 값 집합을 반환합니다.

[!참고]

보고서 작성기 3.0 및 Business Intelligence Development Studio의 보고서 디자이너에서 보고서 정의(.rdl)를 만들고 수정할 수 있습니다. 각 제작 환경에서는 보고서 및 관련 항목을 만들고, 열고, 저장할 수 있는 여러 방법을 제공합니다. 자세한 내용은 microsoft.com 웹에서 보고서 디자이너 및 보고서 작성기 3.0에서 보고서 디자인(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 함수(보고서 작성기 3.0 및 SSRS)를 사용하고, 값 집합에 대해 Lookup을 호출하려면 Multilookup 함수(보고서 작성기 3.0 및 SSRS)를 사용합니다.

다음과 같은 제한 사항이 적용됩니다.

  • LookupSet은 모든 필터 식이 적용된 후 평가됩니다.

  • 조회 수준이 하나만 지원됩니다. 원본, 대상 또는 결과 식에는 조회 함수에 대한 참조가 포함될 수 없습니다.

  • 원본 식과 대상 식의 데이터 형식이 같아야 합니다.

  • 원본, 대상 및 결과 식에는 보고서 또는 그룹 변수에 대한 참조가 포함될 수 없습니다.

  • LookupSet은 다음 보고서 항목에 대한 식으로 사용할 수 없습니다.

    • 데이터 원본에 대한 동적 연결 문자열

    • 데이터 집합의 계산 필드

    • 데이터 집합의 쿼리 매개 변수

    • 데이터 집합의 필터

    • 보고서 매개 변수

    • Report.Language 속성

자세한 내용은 집계 함수 참조(보고서 작성기 3.0 및 SSRS)합계, 집계 및 기본 제공 컬렉션의 식 범위 이해(보고서 작성기 3.0 및 SSRS)를 참조하십시오.

다음 예에서는 영업 지역 식별자 TerritoryGroupID를 포함하는 데이터 집합에 테이블이 바인딩되어 있다고 가정합니다. "Stores"라는 별도의 데이터 집합에는 지역의 모든 매장 목록과 지역 식별자 ID 및 매장 이름 StoreName이 포함되어 있습니다.

다음 식에서 LookupSet은 TerritoryGroupID 값을 "Stores" 데이터 집합에 있는 각 행의 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 추가(보고서 작성기 3.0 및 SSRS)를 참조하십시오.

=Code.MakeList(LookupSet(Fields!TerritoryGroupID.Value, Fields!ID.Value, Fields!StoreName.Value, "Stores"))