다음을 통해 공유


표현식 예제(보고서 작성기 및 SSRS)

식 표현은 보고서에서 콘텐츠와 보고서의 모양을 제어하는 데 자주 사용됩니다. 식은 Microsoft Visual Basic으로 작성되었으며, 기본 제공 함수, 사용자 지정 코드, 보고서 및 그룹 변수, 그리고 사용자 정의 변수를 사용할 수 있습니다. 수식은 등호(=)로 시작합니다. 식 편집기 및 포함할 수 있는 참조 유형에 대한 자세한 내용은 보고서의 식 사용(보고서 작성기 및 SSRS)과식 추가(보고서 작성기 및 SSRS)를 참조하세요.

중요합니다

RDL 샌드박싱을 사용하도록 설정하면 보고서 게시 시간에 특정 형식 및 멤버만 식 텍스트에 사용할 수 있습니다. 자세한 내용은 RDL 샌드박싱 사용 및 사용 안 함을 참조하세요.

이 항목에서는 보고서의 일반적인 작업에 사용할 수 있는 식의 예를 제공합니다.

특정 용도에 대한 식 예제는 다음 항목을 참조하세요.

식을 사용할 수 있는 단순 및 복잡한 식 및 식에 포함할 수 있는 참조 형식에 대한 자세한 내용은 식(보고서 작성기 및 SSRS)의 항목을 참조하세요. 집계를 계산하기 위해 식이 계산되는 컨텍스트에 대한 자세한 내용은 합계, 집계 및 기본 제공 컬렉션에 대한 식 범위(보고서 작성기 및 SSRS)를 참조하세요.

이 주제의 식 예제에서 사용된 많은 함수와 연산자를 보고서 작성을 위한 맥락에서 사용하는 방법을 배우려면 "식 소개" 자습서를 참조하세요.

식 편집기는 기본 제공 함수의 계층적 뷰를 포함합니다. 함수를 선택하면 값 창에 코드 예제가 나타납니다. 자세한 내용은 식 대화 상자 또는 식 대화 상자(보고서 작성기)를 참조하세요.

기능

보고서의 많은 식에는 함수가 포함되어 있습니다. 이러한 함수를 사용하여 데이터 서식을 지정하고, 논리를 적용하고, 보고서 메타데이터에 액세스할 수 있습니다. Microsoft Visual Basic 런타임 라이브러리에서의 함수와 ConvertMath 네임스페이스의 함수를 사용하는 식을 작성할 수 있습니다. 다른 어셈블리 또는 사용자 지정 코드의 함수에 대한 참조를 추가할 수 있습니다. 을 포함하여 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 . 다음 식은 StartDateEndDate 매개 변수의 값을 긴 날짜 형식으로 표시합니다.
=Format(Parameters!StartDate.Value, "D") & " through " &  Format(Parameters!EndDate.Value, "D")    

텍스트 상자에 날짜 또는 숫자만 포함된 경우 텍스트 상자의 서식 속성을 사용하여 텍스트 상자 내의 Format 함수 대신 서식을 적용해야 합니다.

  • , LenInStr 함수는 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 함수는 테스트할 조건이 세 개 이상 있는 경우에 유용합니다. 이 함수는 Switch true로 평가되는 계열의 첫 번째 식과 연결된 값을 반환합니다.
=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이 텍스트 상자에 대한 작업으로 추가되는지 여부를 조건부로 제어할 수도 있습니다.

  • 다음 식은 텍스트 상자에서 작업으로 사용될 때 데이터 세트 필드를 EmployeeID URL 매개 변수로 지정하는 사용자 지정된 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보다 크거나 작은지 여부에 따라 텍스트를 조건부로 표시할 수 있습니다.

또한 참조하십시오