식 표현은 보고서에서 콘텐츠와 보고서의 모양을 제어하는 데 자주 사용됩니다. 식은 Microsoft Visual Basic으로 작성되었으며, 기본 제공 함수, 사용자 지정 코드, 보고서 및 그룹 변수, 그리고 사용자 정의 변수를 사용할 수 있습니다. 수식은 등호(=)로 시작합니다. 식 편집기 및 포함할 수 있는 참조 유형에 대한 자세한 내용은 보고서의 식 사용(보고서 작성기 및 SSRS)과식 추가(보고서 작성기 및 SSRS)를 참조하세요.
중요합니다
RDL 샌드박싱을 사용하도록 설정하면 보고서 게시 시간에 특정 형식 및 멤버만 식 텍스트에 사용할 수 있습니다. 자세한 내용은 RDL 샌드박싱 사용 및 사용 안 함을 참조하세요.
이 항목에서는 보고서의 일반적인 작업에 사용할 수 있는 식의 예를 제공합니다.
Visual Basic 함수 날짜, 문자열, 변환 및 조건부 Visual Basic 함수의 예입니다.
보고서 함수 집계 및 기타 기본 제공 보고서 함수에 대한 예입니다.
보고서 데이터의 모양 보고서의 모양을 변경하는 예제입니다.
속성 보고서 항목 속성을 설정하여 형식 또는 표시 유형을 제어하는 예제입니다.
매개 변수 식에서 매개 변수를 사용하는 예제입니다.
사용자 지정 코드 포함된 사용자 지정 코드의 예입니다.
특정 용도에 대한 식 예제는 다음 항목을 참조하세요.
식을 사용할 수 있는 단순 및 복잡한 식 및 식에 포함할 수 있는 참조 형식에 대한 자세한 내용은 식(보고서 작성기 및 SSRS)의 항목을 참조하세요. 집계를 계산하기 위해 식이 계산되는 컨텍스트에 대한 자세한 내용은 합계, 집계 및 기본 제공 컬렉션에 대한 식 범위(보고서 작성기 및 SSRS)를 참조하세요.
이 주제의 식 예제에서 사용된 많은 함수와 연산자를 보고서 작성을 위한 맥락에서 사용하는 방법을 배우려면 "식 소개" 자습서를 참조하세요.
식 편집기는 기본 제공 함수의 계층적 뷰를 포함합니다. 함수를 선택하면 값 창에 코드 예제가 나타납니다. 자세한 내용은 식 대화 상자 또는 식 대화 상자(보고서 작성기)를 참조하세요.
기능
보고서의 많은 식에는 함수가 포함되어 있습니다. 이러한 함수를 사용하여 데이터 서식을 지정하고, 논리를 적용하고, 보고서 메타데이터에 액세스할 수 있습니다. Microsoft Visual Basic 런타임 라이브러리에서의 함수와 Convert 및 Math 네임스페이스의 함수를 사용하는 식을 작성할 수 있습니다. 다른 어셈블리 또는 사용자 지정 코드의 함수에 대한 참조를 추가할 수 있습니다. 을 포함하여 System.Text.RegularExpressionsMicrosoft .NET Framework의 클래스를 사용할 수도 있습니다.
Visual Basic 함수
Visual Basic 함수를 사용하여 텍스트 상자에 표시되거나 매개 변수, 속성 또는 보고서의 다른 영역에 사용되는 데이터를 조작할 수 있습니다. 이 섹션에서는 이러한 함수 중 일부를 보여 주는 예제를 제공합니다. 자세한 내용은 MSDN의 Visual Basic 런타임 라이브러리 멤버 를 참조하세요.
.NET Framework는 특정 날짜 형식과 같은 다양한 사용자 지정 형식 옵션을 제공합니다. 자세한 내용은 MSDN의 형식 서식 지정 을 참조하세요.
수학 함수
- 이
Round함수는 숫자를 가장 가까운 정수로 반올림하는 데 유용합니다. 다음 식은 1.3에서 1로 반올림합니다.
= Round(1.3)
값을 지정한 배수로 반올림하는 식을 직접 작성할 수 있으며, 이는 Excel의 MRound 함수와 유사합니다. 값을 정수를 만드는 요소로 곱하고 숫자를 반올림한 다음 같은 요소로 나눕니다. 예를 들어 1.3을 .2(1.4)의 가장 가까운 배수로 반올림하려면 다음 식을 사용합니다.
= Round(1.3*5)/5
날짜 함수
- 함수는
Today현재 날짜를 제공합니다. 이 식은 텍스트 상자에서 보고서의 날짜를 표시하거나 매개 변수에서 현재 날짜를 기준으로 데이터를 필터링하는 데 사용할 수 있습니다.
=Today()
- 이
DateAdd함수는 단일 매개 변수를 기반으로 날짜 범위를 제공하는 데 유용합니다. 다음 식은 StartDate라는 매개 변수의 날짜로부터 6개월 후의 날짜를 제공합니다.
=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
- 함수는
Year특정 날짜의 연도를 표시합니다. 날짜를 그룹화하거나 연도를 날짜 집합의 레이블로 표시하는 데 사용할 수 있습니다. 이 식은 지정된 판매 주문 날짜 그룹에 대한 연도를 제공합니다.Month함수 및 기타 함수를 사용하여 날짜를 조작할 수도 있습니다. 자세한 내용은 Visual Basic 설명서를 참조하세요.
=Year(Fields!OrderDate.Value)
- 식에 함수를 결합하여 형식을 사용자 지정할 수 있습니다. 다음 식은 월-일-연도 형식의 날짜 형식을 월-주-주 번호로 변경합니다. 예를 들어 2009년 12월 23일~12월 3일:
=Format(Fields!MyDate.Value, "MMMM") & " Week " &
(Int(DateDiff("d", DateSerial(Year(Fields!MyDate.Value),
Month(Fields!MyDate.Value),1), Fields!FullDateAlternateKey.Value)/7)+1).ToString
데이터 세트에서 계산 필드로 사용하는 경우 차트에서 이 식을 사용하여 매월 내의 주별 값을 집계할 수 있습니다.
- 다음 식은 SellStartDate 값의 형식을 MMM-YY로 지정합니다. SellStartDate 필드는 datetime 데이터 형식입니다.
=FORMAT(Fields!SellStartDate.Value, "MMM-yy")
- 다음 식은 SellStartDate 값의 형식을 dd/MM/yyyy로 지정합니다. SellStartDate 필드는 datetime 데이터 형식입니다.
=FORMAT(Fields!SellStartDate.Value, "dd/MM/yyyy")
- 함수는
CDate값을 날짜로 변환합니다. 이 함수는Now시스템에 따라 현재 날짜 및 시간을 포함하는 날짜 값을 반환합니다.DateDiff는 두 날짜 값 사이의 시간 간격 수를 지정하는 Long 값을 반환합니다.
다음은 현재 연도의 시작 날짜를 표시하는 예제입니다.
=DateAdd(DateInterval.Year,DateDiff(DateInterval.Year,CDate("01/01/1900"),Now()),CDate("01/01/1900"))
- 다음은 현재 월을 기준으로 이전 달의 시작 날짜를 표시하는 예제입니다.
=DateAdd(DateInterval.Month,DateDiff(DateInterval.Month,CDate("01/01/1900"),Now())-1,CDate("01/01/1900"))
- 다음 식은 SellStartDate와 LastReceiptDate 사이의 간격 연도를 생성합니다. 이러한 필드는 DataSet1과 DataSet2의 두 가지 데이터 세트에 있습니다. 집계 함수인 첫 번째 함수(보고서 작성기 및 SSRS)는 DataSet1에서 SellStartDate의 첫 번째 값과 DataSet2에서 LastReceiptDate의 첫 번째 값을 반환합니다.
=DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))
- 함수는
DatePart지정된 Date 값의 지정된 구성 요소를 포함하는 정수 값을 반환합니다. 다음 식은 DataSet1에서 SellStartDate의 첫 번째 값에 대한 연도를 반환합니다. 보고서에 여러 데이터 세트가 있기 때문에 데이터 세트 범위가 지정됩니다.
=Datepart("yyyy", First(Fields!SellStartDate.Value, "DataSet1"))
- 이 함수는
DateSerial시간 정보가 자정으로 설정된 지정된 연도, 월 및 일을 나타내는 Date 값을 반환합니다. 다음은 현재 월을 기준으로 이전 달의 종료 날짜를 표시하는 예제입니다.
=DateSerial(Year(Now()), Month(Now()), "1").AddDays(-1)
- 다음 식은 사용자가 선택한 날짜 매개 변수 값에 따라 다양한 날짜를 표시합니다.
| 예제 설명 | 예시 |
|---|---|
| 어제 | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-1) |
| 이틀 전 | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)-2) |
| 한 달 전 | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-1,Day(Parameters!TodaysDate.Value)) |
| 두 달 전 | =DateSerial(Year(Parameters!TodaysDate.Value),Month(Parameters!TodaysDate.Value)-2,Day(Parameters!TodaysDate.Value)) |
| 1년 전 | =DateSerial(Year(Parameters!TodaysDate.Value)-1,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
| 2년 전 | =DateSerial(Year(Parameters!TodaysDate.Value)-2,Month(Parameters!TodaysDate.Value),Day(Parameters!TodaysDate.Value)) |
문자열 함수
- 연결 연산자와 Visual Basic 상수로 둘 이상의 필드를 결합합니다. 다음 식은 동일한 텍스트 상자의 별도 줄에 각각 두 개의 필드를 반환합니다.
=Fields!FirstName.Value & vbCrLf & Fields!LastName.Value
- 함수를 사용하여 문자열의 날짜 및 숫자 서식을 지정합니다
Format. 다음 식은 StartDate 및 EndDate 매개 변수의 값을 긴 날짜 형식으로 표시합니다.
=Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")
텍스트 상자에 날짜 또는 숫자만 포함된 경우 텍스트 상자의 서식 속성을 사용하여 텍스트 상자 내의 Format 함수 대신 서식을 적용해야 합니다.
- ,
Len및InStr함수는Right하위 문자열을 반환하는 데 유용합니다(예: 도메인\사용자 이름을 사용자 이름으로만 트리밍). 다음 식은 User라는 매개 변수에서 백슬래시(\) 문자의 오른쪽에 있는 문자열 부분을 반환합니다.
=Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))
다음 식은 Visual Basic 함수 대신 .NET Framework String 클래스의 멤버를 사용하여 이전 식과 동일한 값을 생성합니다.
=Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
- 다중값 매개 변수에서 선택한 값을 표시합니다. 다음 예제에서는 함수를 사용하여
Join매개 변수 MySelection 의 선택한 값을 보고서 항목의 텍스트 상자 값에 대한 식으로 설정할 수 있는 단일 문자열에 연결합니다.
= Join(Parameters!MySelection.Value)
다음 예제에서는 위의 예제와 동일한 작업을 수행하고 선택한 값 목록 앞에 텍스트 문자열을 표시합니다.
="Report for " & JOIN(Parameters!MySelection.Value, " & ")
- .NET Framework System.Text.RegularExpressions 의 함수는
Regex전화 번호 서식 지정과 같이 기존 문자열의 형식을 변경하는 데 유용합니다. 다음 식에서는 함수를 사용하여Replace필드의 10자리 전화 번호 형식을 "nnn-nnn-nnn"에서 "(nnn) nnn-nnnn"으로 변경합니다.
=System.Text.RegularExpressions.Regex.Replace(Fields!Phone.Value, "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")
비고
필드의 값인지 확인합니다. Phone.Value에는 추가 공백이 없으며 형식 String입니다.
조회
- 키 필드를 지정하면 함수를 사용하여
Lookup데이터 세트에서 일대일 관계(예: 키-값 쌍)에 대한 값을 검색할 수 있습니다. 다음 식은 일치시킬 제품 식별자가 지정된 데이터 세트("제품")의 제품 이름을 표시합니다.
=Lookup(Fields!PID.Value, Fields!ProductID.Value, Fields!ProductName.Value, "Product")
LookupSet
- 키 필드를 지정하면 함수를
LookupSet사용하여 일대다 관계에 대한 데이터 세트에서 값 집합을 검색할 수 있습니다. 예를 들어 사용자는 여러 전화 번호를 가질 수 있습니다. 다음 예제에서는 데이터 세트 PhoneList에 각 행에 사람 식별자와 전화 번호가 포함되어 있다고 가정합니다.LookupSet는 값 배열을 반환합니다. 다음 식은 반환 값을 단일 문자열로 결합하고 ContactID로 지정된 사람의 전화 번호 목록을 표시합니다.
=Join(LookupSet(Fields!ContactID.Value, Fields!PersonID.Value, Fields!PhoneNumber.Value, "PhoneList"),",")
변환 함수
Visual Basic 함수를 사용하여 필드를 한 데이터 형식에서 다른 데이터 형식으로 변환할 수 있습니다. 변환 함수를 사용하여 필드의 기본 데이터 형식을 계산에 필요한 데이터 형식으로 변환하거나 텍스트를 결합할 수 있습니다.
- 다음 식은 필터 식에 대한 값 필드의 Transact-SQL money 데이터 형식과 비교하기 위해 상수 500을 Decimal 형식으로 변환합니다.
=CDec(500)
- 다음 식은 다중값 매개 변수 MySelection에 대해 선택한 값의 수를 표시합니다.
=CStr(Parameters!MySelection.Count)
의사 결정 함수
- 이 함수는
Iif식이 true인지 여부에 따라 두 값 중 하나를 반환합니다. 다음 식은 함수를Iif사용하여 값이 100을 초과하는 경우의TrueLineTotal부울 값을 반환합니다. 그렇지 않으면 다음을 반환합니다.False
=IIF(Fields!LineTotal.Value > 100, True, False)
- 값에 따라
PctComplete세 가지 값 중 하나를 반환하려면 여러IIF함수("중첩된 IIF"라고도 함)를 사용합니다. 텍스트 상자의 값에 따라 배경색을 변경하려면 다음 식을 텍스트 상자의 채우기 색에 배치할 수 있습니다.
=IIF(Fields!PctComplete.Value >= 10, "Green", IIF(Fields!PctComplete.Value >= 1, "Blue", "Red"))
값이 10보다 크거나 같고 녹색 배경이 표시되고, 1에서 9 사이의 값이 파란색 배경으로 표시되고, 빨간색 배경이 있는 1개 미만의 디스플레이가 표시됩니다.
- 동일한 기능을 가져오는 다른 방법은 함수를
Switch사용합니다. 이Switch함수는 테스트할 조건이 세 개 이상 있는 경우에 유용합니다. 이 함수는Switchtrue로 평가되는 계열의 첫 번째 식과 연결된 값을 반환합니다.
=Switch(Fields!PctComplete.Value >= 10, "Green", Fields!PctComplete.Value >= 1, "Blue", Fields!PctComplete.Value = 1, "Yellow", Fields!PctComplete.Value <= 0, "Red",)
값이 10 이상이면 녹색 배경으로 표시되고, 1에서 9 사이의 값이면 파란색 배경으로 표시됩니다. 값이 1이면 노란색 배경, 0 이하이면 빨간색 배경으로 표시됩니다.
- 필드 값을
ImportantDate테스트하고 1주일이 넘으면 "Red"를 반환하고, 그렇지 않으면 "Blue"를 반환합니다. 이 식을 사용하여 보고서 항목에 있는 텍스트 상자의 Color 속성을 제어할 수 있습니다.
=IIF(DateDiff("d",Fields!ImportantDate.Value, Now())>7,"Red","Blue")
-
PhoneNumber필드의 값을 검사하고, 해당 값이null(Nothing는 Visual Basic에서)이면 "값 없음"을 반환하고, 그렇지 않으면 전화번호 값을 반환합니다. 이 식을 사용하여 보고서 항목의 텍스트 상자 값을 제어할 수 있습니다.
=IIF(Fields!PhoneNumber.Value Is Nothing,"No Value",Fields!PhoneNumber.Value)
-
Department필드 값을 검사하여 하위 보고서 이름이나Nothing(Visual Basic의 경우null)를 반환합니다. 이 식은 조건부 드릴스루 하위 보고서에 사용할 수 있습니다.
=IIF(Fields!Department.Value = "Development", "EmployeeReport", Nothing)
- 필드 값이 null인지 테스트합니다. 이 식을 사용하여 이미지 보고서 항목의
Hidden속성을 제어할 수 있습니다. 다음 예제에서는 필드 값이 null이 아닌 경우에만 [LargePhoto] 필드에 지정된 이미지가 표시됩니다.
=IIF(IsNothing(Fields!LargePhoto.Value),True,False)
- 함수는
MonthName지정된 월의 이름을 포함하는 문자열 값을 반환합니다. 다음은 필드에 값이 0인 경우 월 필드에 NA를 표시하는 예제입니다.
IIF(Fields!Month.Value=0,"NA",MonthName(IIF(Fields!Month.Value=0,1,Fields!Month.Value)))
보고서 기능
식에서 보고서의 데이터를 조작하는 추가 보고서 함수에 대한 참조를 추가할 수 있습니다. 이 섹션에서는 이러한 두 함수에 대한 예제를 제공합니다. 보고서 함수 및 예제에 대한 자세한 내용은 집계 함수 참조(보고서 작성기 및 SSRS)를 참조하세요.
합계
- 이 함수는
Sum그룹 또는 데이터 영역의 값을 합산할 수 있습니다. 이 함수는 그룹의 머리글 또는 바닥글에 유용할 수 있습니다. 다음 식은 Order 그룹 또는 데이터 영역의 데이터 합계를 표시합니다.
=Sum(Fields!LineTotal.Value, "Order")
- 조건부 집계 계산에
Sum이 함수를 사용할 수도 있습니다. 예를 들어, 데이터 세트에 가능한 값이 Not Started, Started, Finished인 "State"라는 필드가 있는 경우, 다음 식은 그룹 헤더에 배치될 때 "Finished"에 대한 집계 합계만 계산합니다.
=Sum(IIF(Fields!State.Value = "Finished", 1, 0))
행 번호
- 데이터 영역 내의 텍스트 상자에 사용되는 함수는
RowNumber식이 표시되는 텍스트 상자의 각 인스턴스에 대한 행 번호를 표시합니다. 이 함수는 테이블의 행 수를 지정하는 데 유용할 수 있습니다. 행 수에 따라 페이지 나누기를 제공하는 등 더 복잡한 작업에도 유용할 수 있습니다. 자세한 내용은 이 항목의 페이지 나누기를 참조하세요.
RowNumber에 지정된 범위가 다시 번호 매기기를 시작하는 시점을 제어합니다. 키워드는 Nothing 함수가 가장 바깥쪽 데이터 영역의 첫 번째 행에서 계산을 시작했음을 나타냅니다. 중첩된 데이터 영역 내에서 계산을 시작하려면 데이터 영역의 이름을 사용합니다. 그룹 내에서 계산을 시작하려면 그룹의 이름을 사용합니다.
=RowNumber(Nothing)
보고서 데이터의 모양
식을 사용하여 보고서에 데이터가 표시되는 방식을 조작할 수 있습니다. 예를 들어 두 필드의 값을 단일 텍스트 상자에 표시하거나, 보고서에 대한 정보를 표시하거나, 보고서에 페이지 나누기를 삽입하는 방법에 영향을 줄 수 있습니다.
페이지 머리글 및 바닥글
보고서를 디자인할 때 보고서 이름과 페이지 번호를 보고서 바닥글에 표시할 수 있습니다. 이렇게 하려면 다음 식을 사용할 수 있습니다.
- 다음 식은 보고서의 이름과 보고서 실행 시간을 제공합니다. 보고서 바닥글의 텍스트 상자나 보고서 본문에 배치할 수 있습니다. 시간은 짧은 날짜에 대한 .NET Framework 서식 문자열로 형식이 지정됩니다.
=Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d")
- 보고서 바닥글의 텍스트 상자에 배치된 다음 식은 보고서의 페이지 번호와 총 페이지를 제공합니다.
=Globals.PageNumber & " of " & Globals.TotalPages
다음 예제에서는 디렉터리 목록에서 찾을 수 있는 것과 유사하게 페이지 머리글의 페이지에서 첫 번째 및 마지막 값을 표시하는 방법을 설명합니다. 이 예제에서는 이름이 지정된 LastName텍스트 상자가 포함된 데이터 영역을 가정합니다.
- 페이지 머리글의 왼쪽에 있는 텍스트 상자에 배치된 다음 식은 페이지에 있는 텍스트 상자의
LastName첫 번째 값을 제공합니다.
=First(ReportItems("LastName").Value)
- 페이지 머리글의 오른쪽에 있는 텍스트 상자에 배치된 다음 식은 페이지에 있는 텍스트 상자의
LastName마지막 값을 제공합니다.
=Last(ReportItems("LastName").Value)
다음 예제에서는 페이지 합계를 표시하는 방법을 설명합니다. 이 예제에서는 이름이 지정된 Cost텍스트 상자가 포함된 데이터 영역을 가정합니다.
- 페이지 머리글 또는 바닥글에 배치된 다음 식은 페이지의 텍스트 상자에 있는
Cost값의 합계를 제공합니다.
=Sum(ReportItems("Cost").Value)
비고
페이지 머리글 또는 바닥글에서는 하나의 식에 대해 보고서 항목 한 개만 참조할 수 있다. 또한 페이지 머리글 및 바닥글 식에서 텍스트 상자 이름을 참조할 수 있지만 텍스트 상자 내의 실제 데이터 식은 참조할 수 없습니다.
페이지 나누기
일부 보고서에서는 그룹 또는 보고서 항목에 더해, 지정된 수의 행 끝에 페이지 나누기를 배치할 수 있습니다. 이렇게 하려면 원하는 그룹 또는 세부 정보 레코드가 포함된 그룹을 만들고, 그룹에 페이지 나누기를 추가한 다음, 그룹 식을 지정된 수의 행으로 그룹에 추가합니다.
- 다음 식은 그룹 식에 배치되는 경우 각 25개 행 집합에 숫자를 할당합니다. 그룹에 대해 페이지 나누기가 정의되면 이 식은 25개 행마다 페이지 나누기를 생성합니다.
=Ceiling(RowNumber(Nothing)/25)
사용자가 페이지당 행 수에 대한 값을 설정할 수 있도록 하려면 다음 식과 같이 명명된 RowsPerPage 매개 변수를 만들고 매개 변수에 그룹 식을 기반으로 합니다.
=Ceiling(RowNumber(Nothing)/Parameters!RowsPerPage.Value)
그룹에 대한 페이지 나누기를 설정하는 방법에 대한 자세한 내용은 페이지 나누기 추가(보고서 작성기 및 SSRS)를 참조하세요.
속성
표현식은 텍스트 상자에 데이터를 표시하는 데만 사용되지 않습니다. 보고서 항목에 속성이 적용되는 방식을 변경하는 데 사용할 수도 있습니다. 보고서 항목의 스타일 정보를 변경하거나 표시 유형을 변경할 수 있습니다.
서식
- 다음 식은 텍스트 상자의 Color 속성에 사용되는 경우 필드 값에 따라 텍스트 색
Profit을 변경합니다.
=Iif(Fields!Profit.Value < 0, "Red", "Black")
Visual Basic 개체 변수 Me를 사용할 수도 있습니다. 이 변수는 텍스트 상자의 값을 참조하는 또 다른 방법입니다.
=Iif(Me.Value < 0, "Red", "Black")
- 다음 식은 데이터 영역에 있는 보고서 항목의 BackgroundColor 속성에서 사용되는 경우 각 행의 배경색을 옅은 녹색과 흰색 사이로 번갈아 가며 사용합니다.
=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
지정된 범위에 식을 사용하는 경우 집계 함수의 데이터 세트를 나타내야 할 수 있습니다.
=Iif(RowNumber("Employees") Mod 2, "PaleGreen", "White")
비고
사용 가능한 색은 .NET Framework KnownColor 열거형에서 제공됩니다.
차트 색상
셰이프 차트의 색을 지정하려면 사용자 지정 코드를 사용하여 색이 데이터 요소 값에 매핑되는 순서를 제어할 수 있습니다. 이렇게 하면 범주 그룹이 같은 여러 차트에 일관된 색을 사용할 수 있습니다. 자세한 내용은 여러 셰이프 차트에서 일관된 색 지정(보고서 작성기 및 SSRS)을 참조하세요.
가시성
보고서 항목의 표시 유형 속성을 사용하여 보고서의 항목을 표시하고 숨길 수 있습니다. 테이블과 같은 데이터 영역에서는 처음에 식의 값을 기반으로 세부 정보 행을 숨길 수 있습니다.
- 다음 식은 그룹에서 세부 행이 처음 표시될 때,
PctQuota필드에서 90%를 초과하는 모든 판매의 세부 행을 보여 줍니다.
=Iif(Fields!PctQuota.Value>.9, False, True)
- 다음 식은 테이블의 Hidden 속성에 설정된 경우 12개 이상의 행이 있는 경우에만 테이블을 보여 줍니다.
=IIF(CountRows()>12,false,true)
- 다음 식은 열의 속성에
Hidden설정된 경우 데이터 원본에서 데이터를 검색한 후 보고서 데이터 세트에 필드가 있는 경우에만 열을 보여 줍니다.
=IIF(Fields!Column_1.IsMissing, true, false)
URL들
보고서 데이터를 사용하여 URL을 사용자 지정하고 URL이 텍스트 상자에 대한 작업으로 추가되는지 여부를 조건부로 제어할 수도 있습니다.
- 다음 식은 텍스트 상자에서 작업으로 사용될 때 데이터 세트 필드를
EmployeeIDURL 매개 변수로 지정하는 사용자 지정된 URL을 생성합니다.
="http://adventure-works/MyInfo?ID=" & Fields!EmployeeID.Value
자세한 내용은 URL에 하이퍼링크 추가(보고서 작성기 및 SSRS)를 참조하세요.
- 다음 식은 텍스트 상자에 URL을 추가할지 여부를 조건부로 제어합니다. 이 식은 사용자가 보고서에 활성 URL을 포함할지 여부를 결정할 수 있도록 하는 매개
IncludeURLs변수에 따라 달라집니다. 이 식은 텍스트 상자에 대한 동작으로 설정됩니다. 매개 변수를 False로 설정한 다음 보고서를 보면 하이퍼링크 없이 Microsoft Excel 보고서를 내보낼 수 있습니다.
=IIF(Parameters!IncludeURLs.Value,"http://adventure-works.com/productcatalog",Nothing)
보고서 데이터
표현식은 보고서에서 사용하는 데이터를 처리하는 데 사용할 수 있습니다. 매개 변수 및 기타 보고서 정보를 참조할 수 있습니다. 보고서의 데이터를 검색하는 데 사용되는 쿼리를 변경할 수도 있습니다.
매개 변수
매개 변수의 식을 사용하여 매개 변수의 기본값을 변경할 수 있습니다. 예를 들어 매개 변수를 사용하여 보고서를 실행하는 데 사용되는 사용자 ID에 따라 특정 사용자로 데이터를 필터링할 수 있습니다.
- 다음 식은 매개 변수의 기본값으로 사용되는 경우 보고서를 실행하는 사용자의 사용자 ID를 수집합니다.
=User!UserID
- 쿼리 매개 변수, 필터 식, 텍스트 상자 또는 보고서의 다른 영역에서 매개 변수를 참조하려면 전역 컬렉션을 사용합니다
Parameters. 이 예제에서는 매개 변수 이름이 Department라고 가정합니다.
=Parameters!Department.Value
- 매개 변수는 보고서에서 만들 수 있지만 숨김으로 설정할 수 있습니다. 보고서가 보고서 서버에서 실행되면 매개 변수가 도구 모음에 나타나지 않으며 보고서 판독기는 기본값을 변경할 수 없습니다. 숨겨진 매개 변수 집합을 기본값으로 사용자 지정 상수로 사용할 수 있습니다. 필드 식을 포함하여 모든 식에서 이 값을 사용할 수 있습니다. 다음 식은 ParameterField라는 매개 변수의 기본 매개 변수 값으로 지정된 필드를 식별합니다.
=Fields(Parameters!ParameterField.Value).Value
사용자 지정 코드
보고서에서 사용자 지정 코드를 사용할 수 있습니다. 사용자 지정 코드는 보고서에 포함되거나 보고서에 사용되는 사용자 지정 어셈블리에 저장됩니다. 사용자 지정 코드에 대한 자세한 내용은 SSRS(보고서 디자이너)의 식에서 사용자 지정 코드 및 어셈블리 참조를 참조하세요.
사용자 지정 집계에 그룹 변수 사용
특정 그룹 범위에 로컬인 그룹 변수의 값을 초기화한 다음 식에 해당 변수에 대한 참조를 포함할 수 있습니다. 사용자 지정 코드와 함께 그룹 변수를 사용할 수 있는 방법 중 하나는 사용자 지정 집계를 구현하는 것입니다. 자세한 내용은 Reporting Services 2008에서 사용자 지정 집계에 그룹 변수 사용을 참조하세요.
변수에 대한 자세한 내용은 보고서 및 그룹 변수 컬렉션 참조(보고서 작성기 및 SSRS)를 참조하세요.
런타임에 Null 또는 0 값 억제
식의 일부 값은 보고서 처리 시 null 또는 undefined로 계산할 수 있습니다. 이렇게 하면 계산된 식 대신 텍스트 상자에 #Error 표시되는 런타임 오류가 발생할 수 있습니다.
IIF 이 함수는 If-Then-Else 문과 달리, true 또는 false를 테스트하는 루틴에 전달되기 전에 IIF 문의 각 부분(함수 호출 포함)을 평가하기 때문에 이 동작에 특히 민감합니다. 문장이 Fields!Sales.Value가 NOTHING인 경우, 렌더링된 보고서에서 #Error을 생성합니다.
이 조건을 방지하려면 다음 전략 중 하나를 사용합니다.
- 필드 B의 값이 0이거나 정의되지 않은 경우 분자를 0으로 설정하고 분모를 1로 설정합니다. 그렇지 않으면 숫자자를 필드 A의 값으로 설정하고 분모를 필드 B의 값으로 설정합니다.
=IIF(Field!B.Value=0, 0, Field!A.Value / IIF(Field!B.Value =0, 1, Field!B.Value))
- 사용자 지정 코드 함수를 사용하여 식의 값을 반환합니다. 다음 예제에서는 현재 값과 이전 값 간의 백분율 차이를 반환합니다. 이는 두 연속되는 값 간의 차이를 계산하는 데 사용할 수 있으며, 첫 번째 비교 시 (이전 값이 없을 때)의 경계 상황과 이전 값 또는 현재 값이
null인지Nothing인지 여부를 정확하게 처리합니다 (Visual Basic에서).
Public Function GetDeltaPercentage(ByVal PreviousValue, ByVal CurrentValue) As Object
If IsNothing(PreviousValue) OR IsNothing(CurrentValue) Then
Return Nothing
Else if PreviousValue = 0 OR CurrentValue = 0 Then
Return Nothing
Else
Return (CurrentValue - PreviousValue) / CurrentValue
End If
End Function
다음 식에서는 "ColumnGroupByYear" 컨테이너(그룹 또는 데이터 영역)에 대해 텍스트 상자에서 이 사용자 지정 코드를 호출하는 방법을 보여 줍니다.
=Code.GetDeltaPercentage(Previous(Sum(Fields!Sales.Value),"ColumnGroupByYear"), Sum(Fields!Sales.Value))
이렇게 하면 런타임 예외를 방지할 수 있습니다. 이제 텍스트 상자의 속성과 Color 같은 =IIF(Me.Value < 0, "red", "black") 식을 사용하여 값이 0보다 크거나 작은지 여부에 따라 텍스트를 조건부로 표시할 수 있습니다.