Share via


식에 전역 컬렉션 사용(Reporting Services)

업데이트: 2006년 4월 14일

Reporting Services에서는 식에서 참조할 수 있는 DataSources, DataSets, Fields, Globals, Parameters, ReportItemsUser 전역 컬렉션을 제공합니다. 식에서 컬렉션을 참조하려면 컬렉션의 항목에 대해 표준 Visual Basic 구문을 사용합니다. 다음 목록에서는 이 구문의 예를 보여 줍니다.

  • Collection!ObjectName.Property 또는 Collection!ObjectName("Property")
    =Fields!Sales.Value
    =Fields!Sales("Value")
  • Collection("ObjectName").Property
    =Fields("Sales").Value
  • Collection("Member")
    =User("Language")
  • Collection.Member
    =User.Language

전역 컬렉션 요약

다음 표에서는 각 전역 컬렉션을 설명하고 식에서 해당 컬렉션을 참조할 수 있는 시기를 설명합니다. 각 전역 컬렉션은 이 섹션의 뒷부분에서 별도의 항목으로 설명합니다.

전역 컬렉션 설명

Fields

=Fields!Sales.Value

보고서에 사용할 수 있는 데이터 집합의 필드 컬렉션을 나타냅니다. 데이터 원본에 있는 데이터를 검색하여 데이터 집합으로 가져온 다음 사용할 수 있습니다.

ReportItems

=ReportItems("Textbox1").Value

테이블 데이터 영역, 페이지 머리글 또는 페이지 바닥글 내에 포함된 텍스트 상자를 비롯하여 보고서 항목의 텍스트 상자 컬렉션을 나타냅니다. 보고서 처리 중에 사용할 수 있습니다.

Globals

=Globals.ReportName

보고서 이름이나 페이지 번호를 비롯하여 보고서에 유용한 전역 변수를 나타냅니다. 항상 사용할 수 있습니다.

Parameters

=Parameters("ReportMonth").Value

-또는-

=Parameters!ReportYear.Value

각각 단일값 또는 다중값일 수 있는 보고서 매개 변수 컬렉션을 나타냅니다. 초기화 처리가 완료된 다음에만 사용할 수 있습니다. 쿼리 매개 변수를 만들면 자동으로 보고서 매개 변수 컬렉션에 추가됩니다.

User

=User.UserID

-또는-

User.Language

언어 설정 또는 사용자 ID를 비롯하여 보고서를 실행하는 사용자에 대한 데이터 컬렉션을 나타냅니다. 항상 사용할 수 있습니다. User!UserID는 보고서에서 결과를 필터링하기 위해 자주 사용됩니다.

DataSources

=DataSources("AdventureWorks").Type

보고서 본문에서 참조하는 데이터 원본 컬렉션을 나타냅니다. 페이지 머리글이나 페이지 바닥글에만 사용되는 데이터 원본은 포함되지 않습니다. 로컬 미리 보기에서는 사용할 수 없습니다.

DataSets

=DataSets("TopEmployees").CommandText

보고서 정의 본문에서 참조하는 데이터 집합 컬렉션을 나타냅니다. 페이지 머리글이나 페이지 바닥글에만 사용되는 데이터 원본은 포함되지 않습니다. 로컬 미리 보기에서는 사용할 수 없습니다.

GlobalsUsers 컬렉션의 멤버는 variants를 반환합니다. 특정 데이터 형식이 필요한 식에서 전역 변수를 사용하려면 먼저 변수를 형변환해야 합니다. 예를 들어 실행 시간 variant를 날짜 형식으로 변환하려면 CDate(Globals!ExecutionTime)를 사용합니다. 자세한 예는 Reporting Services의 식 예를 참조하십시오.

Fields

보고서의 각 데이터 집합에는 Fields 컬렉션이 하나씩 있습니다. 이 컬렉션은 데이터 집합 창에서 데이터 집합 노드를 확장할 때 표시되는 필드 컬렉션입니다. Fields 컬렉션은 일반적으로 보고서의 텍스트 상자에 데이터를 표시하는 데 사용되지만 다른 보고서 항목, 속성 및 함수에도 사용될 수 있습니다. 필드 이름은 컬렉션 내에서 고유해야 하지만 여러 컬렉션 사이에서는 같은 필드 이름이 존재할 수 있습니다.

일부 데이터 처리 확장 프로그램에서는 사용자가 데이터 집합에 대해 정의한 쿼리를 기반으로 필드 컬렉션이 자동으로 결정됩니다. 도구 모음에서 필드 새로 고침 단추를 클릭하면 변경 내용이 보고서 정의에 저장되고 데이터 집합 창이 업데이트되어 해당 변경 내용이 표시됩니다. 필드 정의를 편집하려면 데이터 뷰의 보고서 디자이너에서 데이터 집합을 선택하여 데이터 집합 대화 상자를 열고 필드 탭을 클릭합니다. 계산 필드를 추가하려면 데이터 집합 창에서 데이터 집합을 마우스 오른쪽 단추로 클릭하여 새 필드 추가 대화 상자를 열고 필드 이름을 입력합니다. 그런 다음 계산 필드를 클릭하고 식을 입력합니다.

보고서를 처리하는 동안 각 보고서 항목이 차례로 처리되면서 현재 보고서 항목과 연결된 Fields 컬렉션이 기본 원본 데이터에 바인딩됩니다. 특정 필드에 대해 반환된 데이터는 단일 값이거나 보고서가 처리될 때 데이터 집합에 있던 각 행의 값일 수 있습니다. 단일 값을 가져올지 아니면 여러 값을 가져올지 여부는 필드 참조가 들어 있는 보고서 항목의 유형에 따라 결정됩니다. 데이터 영역(테이블, 행렬, 목록 또는 차트)의 참조는 데이터 집합의 각 행에 대한 값을 반환합니다. 데이터 영역에 포함되지 않은 참조는 단일 값을 반환합니다.

집계 보고서 함수를 사용하여 데이터 집합의 필드 컬렉션을 처리하는 경우 데이터 집합을 지정하는 scope 매개 변수를 포함합니다. 보고서 항목과 데이터 집합의 연결을 확인하려면 보고서 항목을 선택하고 해당 속성을 봅니다. 보고서 함수 및 범위 매개 변수에 대한 자세한 내용은 식에 보고서 함수 사용(Reporting Services)을 참조하십시오.

Fields 컬렉션의 항목에는 기본적으로 ValueIsMissing 속성이 있습니다. 데이터 집합 창에서 보고서 레이아웃의 보고서 항목으로 필드를 끌면 보고서 항목의 내용은 기본적으로 해당 필드의 Value 속성으로 설정됩니다. 데이터 영역의 경우 데이터 집합에 있는 각 행의 값은 =Fields!FieldName.Value로 설정됩니다. 데이터 영역이 아닌 보고서 항목의 내용은 =First(Fields!FieldName.Value)와 같은 단일 값으로 설정됩니다.

IsMissing 속성은 데이터 집합에 대해 정의된 필드가 데이터 원본에서 검색된 필드에 포함되어 있는지 여부를 나타냅니다. 이 필드는 Visual Basic을 사용하여 필드 식에서 테스트할 수 있습니다. 누락된 필드의 Value 속성은 Null(Visual Basic의 경우 Nothing)입니다. 다음 예는 필드 데이터를 표시할 보고서 항목 텍스트 상자에 사용될 경우 누락된 필드를 테스트하는 방법을 보여 줍니다.

=IIF(Fields!FieldName.IsMissing, "Field was not returned by query", Fields!FieldName.Value))

Visual Basic 함수 IIF는 결과를 반환하기 전에 문의 모든 요소를 평가하므로 누락된 필드에 대한 참조가 있으면 처리 오류가 발생할 수 있습니다. 다음 예에서는 누락된 필드를 참조하는 Visual Basic 함수를 호출하는 방법을 보여 줍니다.

=IIF(Sum(Fields!FieldName.Value) IS NOTHING, 0, Sum(Fields!FieldName.Value))

필드를 참조하는 식을 작성하는 데 유용한 식 편집기를 사용하는 경우 첫 번째 창에서 Fields 컬렉션을 선택하면 사용 가능한 필드 목록이 마지막 창에 표시됩니다. 다음 그림에서는 Employees라는 데이터 집합의 FirstName 필드를 보여 줍니다.

Intellisense가 포함된 식 편집 대화 상자

IntelliSense 창에는 사용할 수 있는 속성 목록이 표시됩니다. 이 목록에는 기본 속성 ValueIsMissing이 포함되어 있습니다. 나머지 속성은 다른 데이터 처리 확장 프로그램에서 지원하는 미리 정의된 확장 필드 속성입니다.

확장 필드 속성

확장 필드 속성은 데이터 처리 확장 프로그램에서 필드에 대해 정의한 추가 속성입니다. 일부 확장 필드 속성은 미리 정의되어 있습니다. 미리 정의된 속성은 일반적으로 사용되는 필드 속성으로, 대개 Key, UniqueName 등의 필드에 대해 정의됩니다. 미리 정의된 이러한 속성은 IntelliSense 목록에 나타나며 컬렉션 구문 Fields!FieldName.Property를 사용하여 참조할 수 있습니다. 데이터 처리 확장 프로그램에서는 이 구문이 포함된 쿼리를 최적화하여 미리 정의된 속성을 이용할 수 있습니다.

또한 특정 데이터 처리 확장 프로그램에서 지원하는 다른 확장 필드 속성을 참조할 수 있습니다. 이러한 속성은 식 창에 나타나지 않지만 등록된 데이터 처리 확장 프로그램 및 연관된 해당 쿼리 디자이너를 통해 데이터 원본을 탐색하면 확인할 수 있습니다. 확장 필드 속성은 컬렉션 구문 Fields!FieldName("Property")를 사용하여 참조할 수 있습니다.

데이터 공급자가 확장 필드 속성을 지원하지 않거나 쿼리가 실행될 때 해당 필드가 없으면 속성 값은 StringObject 형식 속성의 경우 null(Visual Basic의 경우 Nothing)이 되고 Integer 형식 속성의 경우 0이 됩니다.

데이터 확장 프로그램에서 사용자 지정 필드 속성을 제공하는 경우 필드가 해당 속성을 지원하는지 여부에 관계없이 데이터 집합의 모든 필드에 대한 식 편집기 드롭다운 목록에 그러한 속성이 표시됩니다. 해당 필드에 지원되지 않는 속성에 대한 참조를 추가하는 경우 이 참조는 null(Visual Basic의 경우 Nothing)이 됩니다. 확장 필드 속성을 지원하는 공급자의 예를 보려면 Analysis Services 다차원 및 데이터 마이닝 예측 데이터에 대한 보고서 데이터 집합 정의SAP NetWeaver BI 시스템에서 다차원 데이터에 대한 보고서 데이터 집합 정의를 참조하십시오.

Globals

Globals 컬렉션에는 보고서의 전역 변수가 포함됩니다. 다음 표에서는 Globals 컬렉션의 멤버를 설명합니다.

멤버 유형 설명

ExecutionTime

DateTime

보고서가 실행되기 시작한 날짜와 시간입니다.

PageNumber

Integer

현재 페이지 번호입니다. 페이지 머리글과 바닥글에서만 사용될 수 있습니다.

ReportFolder

String

보고서를 포함하는 폴더의 전체 경로입니다. 여기에는 보고서 서버 URL이 포함되지 않습니다.

ReportName

String

보고서 서버 데이터베이스에 저장되어 있는 보고서의 이름입니다.

ReportServerUrl

String

보고서가 실행 중인 보고서 서버의 URL입니다.

TotalPages

Integer

보고서의 총 페이지 수입니다. 페이지 머리글과 바닥글에서만 사용될 수 있습니다.

전역 변수의 예는 다음과 같습니다.

  • 이 식을 보고서 바닥글의 텍스트 상자에 배치하면 보고서의 페이지 번호와 총 페이지 수가 제공됩니다.
    =Globals.PageNumber & " of " & Globals.TotalPages
  • 이 식은 보고서 이름과 보고서가 실행된 시간을 제공합니다. 시간은 Microsoft .NET Framework 형식 문자열(간단한 날짜)로 지정합니다.
    =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")

Parameters

Parameters 컬렉션에는 보고서 내의 보고서 매개 변수 개체가 포함됩니다. 매개 변수는 쿼리에 전달하거나, 필터에 사용하거나, 매개 변수에 따라 보고서 모양 및 내용을 변경하는 다른 함수에 사용할 수 있습니다. 쿼리 매개 변수를 정의하면 자동으로 보고서 매개 변수 컬렉션에 추가됩니다. 다음 표에서는 Parameter에 정의된 Count, IsMultiValue, ValueLabel 속성을 설명합니다.

속성 설명

Count

컬렉션에 있는 매개 변수 수를 나타내는 정수입니다.

IsMultiValue

이 매개 변수에 값 집합이 있음을 식별하는 부울입니다.

Value

매개 변수의 값입니다. 다중값 매개 변수의 경우 Value는 개체 배열을 반환합니다.

Label

매개 변수에 대한 레이블입니다. 레이블을 지정하지 않으면 Label 속성 값이 Value 속성과 같게 됩니다. 두 개 이상의 Label 값이 같은 Value에 연결되어 있는 경우 일치하는 첫 번째 Label이 사용됩니다. 다중값 매개 변수의 경우 Label은 개체 배열을 반환합니다.

속성 구문이나 컬렉션 구문 중 하나를 통해 매개 변수에 액세스할 수 있습니다. 다음 식에서는 Parameters 컬렉션의 모든 멤버에 액세스하는 방법을 보여 줍니다. 이 식을 보고서 항목의 텍스트 상자에 배치하면 ProductSubCategory 매개 변수의 내용이 표시됩니다.

="IsMultiValue: " & Parameters!ProductSubCategory.IsMultiValue.ToString() 
& " Count:" & Parameters!ProductSubCategory.Count & " Values: " 
& Join(Parameters!ProductSubCategory.Value,", ") & " Labels: " 
& Join(Parameters!ProductSubCategory.Label,", ")

자세한 내용은 Reporting Services의 매개 변수 작업을 참조하십시오.

ReportItems

ReportItems 컬렉션에는 보고서 내의 텍스트 상자가 포함됩니다. ReportItems 컬렉션 내의 항목은 Value 속성만 가집니다. ReportItems 항목의 값은 보고서에 있는 다른 필드의 데이터를 표시하거나 계산하는 데 사용될 수 있습니다. 현재 텍스트 상자의 값에 액세스하려면 Visual Basic에 기본으로 제공되는 전역 Me.Value를 사용하거나 Value만을 사용할 수 있습니다. 그러나 First와 같은 보고서 함수 및 집계 함수에서는 정규화된 구문을 사용해야 합니다.

예를 들면 다음과 같습니다.

  • 이 식을 텍스트 상자에 배치하면 Textbox1이라는 ReportItem 텍스트 상자의 값이 표시됩니다.
    =ReportItems("Textbox1").Value
  • 이 식을 ReportItem 텍스트 상자 Color 속성에 배치하면 값이 > 0인 경우 텍스트가 검은색으로 표시되고 그렇지 않은 경우 빨간색으로 표시됩니다.
    =iif(Me.Value > 0,"Black","Red")
  • 이 식을 페이지 머리글 또는 페이지 바닥글의 텍스트 상자에 배치하면 LastName이라는 텍스트 상자에 대해 렌더링된 보고서의 페이지별 첫 번째 값이 표시됩니다.
    =First(ReportItems("LastName").Value)

User

User 컬렉션에는 보고서를 실행하는 사용자에 대한 데이터가 포함됩니다. 예를 들어 이 컬렉션을 사용하여 보고서에 나타나는 데이터를 필터링함으로써 현재 사용자의 데이터만 표시하거나 보고서 제목 등에 UserID를 표시할 수 있습니다. 다음 식을 텍스트 상자에 배치하면 정적 텍스트와 변수 사용자 데이터가 결합됩니다.

=Globals!ReportName & " for " & User!UserID

다음 표에서는 User 컬렉션의 멤버를 설명합니다.

멤버 유형 설명

Language

String

보고서를 실행하는 사용자의 언어(예: en-US)입니다.

UserID

String

보고서를 실행하는 사용자의 ID입니다. Windows 인증을 사용하는 경우 이 값은 현재 사용자의 도메인 계정입니다. 값은 Reporting Services 보안 확장 프로그램에 의해 결정되며 이 프로그램은 Windows 인증 또는 사용자 지정 인증을 사용할 수 있습니다.

User!UserID 변수를 포함하는 보고서에서는 보고서를 보고 있는 현재 사용자와 관련된 보고서 데이터를 표시하지 못하는 경우도 있습니다. 이 오류가 발생하는 조건은 다음과 같습니다.

  • 보고서가 보고서 실행 스냅숏이거나 보고서 기록 스냅숏입니다.
  • 보고서를 SOAP 메서드를 통해 프로그래밍 방식으로 액세스하거나 보고서 URL 주소를 통해 액세스합니다.

이 오류가 발생하면 보고서 스냅숏의 사용자 프로필 정보는 다음 중 하나를 기반으로 하게 됩니다.

  • 보고서 스냅숏을 만든 사용자의 ID
  • 보고서 서버에서 스냅숏을 예약된 작업으로 만든 경우 보고서 서버를 실행하는 계정
ms157274.note(ko-kr,SQL.90).gif중요:
사용자 프로필 정보에 기반하는 보고서 스냅숏 업데이트 실패는 잘못된 데이터의 원인이 되며 스냅숏에 중요한 데이터 또는 기밀 데이터가 포함되어 있을 경우 보안상 위험하게 됩니다.

사용자 프로필 오류는 SOAP 호출 또는 보고서 스냅숏의 URL 주소를 통해 여는 보고서 스냅숏에 대해서만 발생합니다. 요청 시 실행되는 보고서와 보고서 관리자에서 여는 모든 보고서 스냅숏의 경우 User!UserID가 올바르게 작동합니다. 웹 서비스 메서드 및 URL 액세스를 통해 보고서 스냅숏을 호출하는 방법은 Using a URL to Access Report Server ItemsIdentifying Execution State을 참조하십시오.

DataSources

DataSources 컬렉션은 게시된 보고서 정의에 참조되는 데이터 원본을 나타냅니다. 이때 미리 보기 모드에서 표시되는 속성 값과 보고서를 배포한 다음 게시된 보고서에 표시되는 값이 다를 수 있습니다.

다음 표에서는 DataSources 컬렉션 내의 변수를 설명합니다.

변수 유형 설명

DataSourceReference

String

보고서 서버에 있는 데이터 원본의 전체 경로(예: /DataSources/AdventureWorks)입니다.

Type

String

데이터 원본의 데이터 공급자 유형(예: SQL)입니다.

DataSets

DataSets 컬렉션은 보고서 정의에 참조되는 데이터 집합을 나타냅니다. 이 전역 컬렉션을 보고서에 직접 사용하는 경우는 드물지만 보고서 디자이너가 각 데이터 집합의 데이터 원본에서 데이터를 검색하는 데 사용되는 쿼리 명령에 액세스하기 위해 사용할 수 있습니다.

다음 표에서는 DataSets 컬렉션의 멤버를 설명합니다.

멤버 유형 설명

CommandText

String

데이터베이스 데이터 원본의 경우 이 멤버는 데이터 원본에서 데이터를 검색하는 데 사용되는 쿼리입니다. 쿼리가 식인 경우 이 멤버는 평가 식입니다.

RewrittenCommandText

String

데이터 공급자의 확장 CommandText 값입니다. 일반적으로 이 값은 보고서 매개 변수에 매핑된 쿼리 매개 변수가 있는 보고서에 사용됩니다. 데이터 공급자는 명령 텍스트 매개 변수 참조를 매핑된 보고서 매개 변수에 대해 선택된 상수 값으로 확장할 때 이 속성을 설정합니다.

참고 항목

작업

방법: 식 추가(보고서 디자이너)

개념

보고서 레이아웃 및 렌더링 이해
보고서 디자인 기본 사항

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 4월 14일

변경된 내용
  • 확장 필드에 대한 내용을 변경했습니다.

2005년 12월 5일

새로운 내용
  • Datasets 및 DataSources 컬렉션을 추가했습니다.
변경된 내용
  • 전역 구문 예를 수정했습니다.