보고서에 포함된 사용자 지정 코드 또는 컴퓨터에 빌드하여 저장하고 보고서 서버에 배포하는 사용자 지정 어셈블리에 대한 참조를 추가할 수 있습니다. 단일 보고서에서 여러 번 사용되는 사용자 지정 상수, 복잡한 함수 또는 함수에 포함된 코드를 사용합니다. 사용자 지정 코드 어셈블리를 사용하여 코드를 한 곳에서 유지 관리하고 여러 보고서에서 사용할 수 있도록 공유합니다. 사용자 지정 코드에는 새 사용자 지정 상수, 변수, 함수 또는 서브루틴이 포함될 수 있습니다. Parameters 컬렉션과 같은 기본 제공 컬렉션에 대한 읽기 전용 참조를 포함할 수 있습니다. 그러나 보고서 데이터 값 집합을 사용자 지정 함수에 전달할 수는 없습니다. 특히 사용자 지정 집계는 지원되지 않습니다.
중요합니다
런타임에 한 번 평가되고 보고서 처리 전체에서 동일한 값을 유지하려는 시간에 민감한 계산의 경우 보고서 변수 또는 그룹 변수를 사용할지 여부를 고려합니다. 자세한 내용은 보고서 및 그룹 변수 컬렉션 참조(보고서 작성기 및 SSRS)를 참조하세요.
보고서 디자이너는 보고서에 사용자 지정 코드를 추가하는 데 사용하는 기본 작성 환경입니다. 보고서 작성기에서는 유효한 식이 있거나 보고서 서버의 사용자 지정 어셈블리에 대한 참조를 포함하는 보고서 처리를 지원합니다. 보고서 작성기에서는 사용자 지정 어셈블리에 대한 참조를 추가하는 방법을 제공하지 않습니다.
비고
보고서 서버를 업그레이드하는 동안 사용자 지정 어셈블리에 의존하는 보고서에는 업그레이드를 완료하기 위한 추가 단계가 필요할 수 있습니다. 자세한 내용은 업그레이드 관리자를 사용하여 업그레이드 준비를 참조하세요.
비고
보고서 작성기 및 SQL Server 데이터 도구의 보고서 디자이너에서 보고서 정의(.rdl)를 만들고 수정할 수 있습니다. 각 작성 환경은 보고서 및 관련 항목을 만들고, 열고, 저장하는 다양한 방법을 제공합니다. 자세한 내용은 microsoft.com 웹 의 보고서 디자이너 및 SSRS(보고서 작성기)에서 보고서 디자인을 참조하세요.
보고서 작성기에서 사용자 지정 코드 작업
보고서 작성기에서 사용자 지정 어셈블리에 대한 참조를 포함하는 보고서 서버에서 보고서를 열 수 있습니다. 예를 들어 SSDT(SQL Server Data Tools)에서 보고서 디자이너를 사용하여 만들고 배포한 보고서를 편집할 수 있습니다. 사용자 지정 어셈블리를 보고서 서버에 배포해야 합니다.
다음을 수행할 수 없습니다.
보고서에 참조 또는 클래스 멤버 인스턴스를 추가합니다.
로컬 모드에서 사용자 지정 어셈블리에 대한 참조가 있는 보고서를 미리 봅니다.
일반적으로 사용되는 함수에 대한 참조 포함
식 대화 상자를 사용하여 Reporting Services에 기본 제공되는 일반 함수의 분류된 목록을 볼 수 있습니다. Common Functions를 확장하고 범주를 클릭하면 항목 창에 식에 포함하는 함수 목록이 표시됩니다. 일반적인 함수에는 .NET Framework Math 및 네임스페이스의 클래스와 Convert Visual Basic 런타임 라이브러리 함수가 포함됩니다. 편의를 위해 식 대화 상자에서 가장 일반적으로 사용되는 함수를 볼 수 있습니다. 여기서는 텍스트, 날짜 및 시간, 수학, 검사, 프로그램 흐름, 집계, 재무, 변환 및 기타 범주별로 나열됩니다. 덜 일반적으로 사용되는 함수는 목록에 표시되지 않지만 식에서 계속 사용할 수 있습니다.
기본 제공 함수를 사용하려면 항목 창에서 함수 이름을 두 번 클릭합니다. 설명 창에 함수에 대한 설명이 나타나고 예제 창에 함수 호출의 예가 나타납니다. 코드 창에서 함수 이름 뒤에 왼쪽 괄호를 입력하면 IntelliSense는 함수 호출에 대해 유효한 각 구문을 표시합니다. 예를 들어 테이블에 명명된 Quantity 필드의 최대값을 계산하려면 코드 창에 단순 식을 =Max( 추가한 다음 스마트 태그를 사용하여 함수 호출에 대해 가능한 모든 유효한 구문을 봅니다. 이 예제를 완료하려면 .를 입력합니다 =Max(Fields!Quantity.Value).
각 함수에 대한 자세한 내용은 MSDN의 Visual Basic 런타임 라이브러리 멤버를 참조MathConvert하세요.
덜 일반적으로 사용되는 함수에 대한 참조 포함
덜 일반적으로 사용되는 다른 CLR 네임스페이스에 대한 참조를 포함하려면 정규화된 참조를 사용해야 합니다. 예를 들면 StringBuilder다음과 같습니다. IntelliSense는 덜 일반적으로 사용되는 함수에 대한 식 대화 상자의 코드 창에서 지원되지 않습니다.
자세한 내용은 MSDN의 Visual Basic 런타임 라이브러리 멤버 를 참조하세요.
외부 어셈블리에 대한 참조 포함
외부 어셈블리에 클래스에 대한 참조를 포함하려면 보고서 프로세서의 어셈블리를 식별해야 합니다. 보고서 속성 대화 상자의 참조 페이지를 사용하여 보고서에 추가할 어셈블리의 정규화된 이름을 지정할 수 있습니다. 식에서 어셈블리의 클래스에 대해 완전한 한정 이름을 사용해야 합니다. 외부 어셈블리의 클래스는 식 대화 상자에 표시되지 않습니다. 클래스에 대한 올바른 이름을 제공해야 합니다. 정규화된 이름에는 네임스페이스, 클래스 이름 및 멤버 이름이 포함됩니다.
임베디드 코드 포함
보고서에 포함된 코드를 추가하려면 보고서 속성 대화 상자의 코드 탭을 사용합니다. 만드는 코드 블록에는 여러 메서드가 포함될 수 있습니다. 포함된 코드의 메서드는 Microsoft Visual Basic에서 작성해야 하며 인스턴스 기반이어야 합니다. 보고서 프로세서는 System.Convert 및 System.Math 네임스페이스에 대한 참조를 자동으로 추가합니다. 보고서 속성 대화 상자의 참조 페이지를 사용하여 어셈블리 참조를 추가합니다. 자세한 내용은 SSRS(보고서에 어셈블리 참조 추가)를 참조하세요.
포함된 코드의 메서드는 전역적으로 정의된 Code 멤버를 통해 사용할 수 있습니다.
Code 멤버와 메서드 이름을 참조하여 해당 항목에 접근합니다. 다음 예제에서는 필드의 값을 달러 값 StandardCost 으로 변환하는 메서드ToUSD를 호출합니다.
=Code.ToUSD(Fields!StandardCost.Value)
사용자 지정 코드에서 기본 제공 컬렉션을 참조하려면 기본 제공 Report 개체에 대한 참조를 포함합니다.
=Report.Parameters!Param1.Value
다음 예제에서는 일부 사용자 지정 상수 및 변수를 정의하는 방법을 보여 줍니다.
Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456
사용자 지정 상수는 식 대화 상자의 상수 범주에 표시되지 않지만(기본 제공 상수만 표시) 다음 예제와 같이 식에서 참조를 추가할 수 있습니다. 식에서 사용자 지정 상수는 .로 Variant처리됩니다.
=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion
다음 예제는 코드 참조 및 함수 구현과 함께 제공되며, 함수 FixSpelling는 SubCategory 필드에서 "Bike" 텍스트의 모든 발생을 "Bicycle" 텍스트로 대체합니다.
=Code.FixSpelling(Fields!SubCategory.Value)
다음 코드는 보고서 정의의 코드 블록에 삽입되어 FixSpelling 메서드의 구현을 보여줍니다. 이 예제에서는 Microsoft .NET Framework StringBuilder 클래스에 대한 정규화된 참조를 사용하는 방법을 보여줍니다.
Public Function FixSpelling(ByVal s As String) As String
Dim strBuilder As New System.Text.StringBuilder(s)
If s.Contains("Bike") Then
strBuilder.Replace("Bike", "Bicycle")
Return strBuilder.ToString()
Else : Return s
End If
End Function
기본 제공 개체 컬렉션 및 초기화에 대한 자세한 내용은 기본 제공 전역 및 사용자 참조(보고서 작성기 및 SSRS) 및 사용자 지정 어셈블리 개체 초기화를 참조하세요.
코드에서 매개 변수에 대한 참조 포함
보고서 정의의 코드 블록 또는 사용자가 제공하는 사용자 지정 어셈블리에서 사용자 지정 코드를 통해 전역 매개 변수 컬렉션을 참조할 수 있습니다. 매개 변수 컬렉션은 읽기 전용이며 공용 반복기가 없습니다. Visual Basic For Each 구문을 사용하여 컬렉션을 단계별로 실행할 수 없습니다. 코드에서 참조하려면 보고서 정의에 정의된 매개 변수의 이름을 알아야 합니다. 그러나 다중값 매개 변수의 모든 값을 반복할 수 있습니다.
다음 표에는 사용자 지정 코드에서 기본 제공 컬렉션을 Parameters 참조하는 예제가 포함되어 있습니다.
| 설명 | 식의 참조 | 사용자 지정 코드 정의 |
|---|---|---|
| 전체 전역 매개 변수 컬렉션을 사용자 지정 코드에 전달합니다. 이 함수는 특정 보고서 매개 변수 MyParameter의 값을 반환합니다. |
=Code.DisplayAParameterValue(Parameters) |
Public Function DisplayAParameterValue(ByVal parameters as Parameters) as ObjectReturn parameters("MyParameter").ValueEnd Function |
| 개별 매개 변수를 사용자 지정 코드에 전달합니다. 이 예제에서는 전달된 매개 변수의 값을 반환합니다. 매개 변수가 다중값 매개 변수인 경우 반환 문자열은 모든 값의 연결입니다. |
=Code.ShowParametersValues(Parameters!DayOfTheWeek) |
Public Function ShowParameterValues(ByVal parameter as Parameter) as String Dim s as String If parameter.IsMultiValue then s = "Multivalue: " For i as integer = 0 to parameter.Count-1 s = s + CStr(parameter.Value(i)) + " " Next Else s = "Single value: " + CStr(parameter.Value) End If Return s End Function |
사용자 지정 어셈블리의 코드에 대한 참조 포함
보고서에서 사용자 지정 어셈블리를 사용하려면 먼저 어셈블리를 만들고, 보고서 디자이너에서 사용할 수 있도록 하고, 보고서의 어셈블리에 대한 참조를 추가한 다음, 보고서의 식을 사용하여 해당 어셈블리에 포함된 메서드를 참조해야 합니다. 보고서가 보고서 서버에 배포되면 사용자 지정 어셈블리도 보고서 서버에 배포해야 합니다.
사용자 지정 어셈블리를 만들고 Reporting Services에서 사용할 수 있도록 하는 방법에 대한 자세한 내용은 보고서에서 사용자 지정 어셈블리 사용을 참조하세요.
식에서 사용자 지정 코드를 참조하려면 어셈블리 내에서 클래스의 멤버를 호출해야 합니다. 이 작업을 수행하는 방법은 메서드가 정적인지 인스턴스 기반인지에 따라 달라집니다. 사용자 지정 어셈블리 내의 정적 메서드는 보고서 내에서 전역적으로 사용할 수 있습니다. 네임스페이스, 클래스 및 메서드 이름을 지정하여 식에서 정적 메서드에 액세스할 수 있습니다. 다음 예제에서는 StandardCost 값의 값을 달러에서 파운드 스털링으로 변환하는 메서드ToGBP를 호출합니다.
=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)
인스턴스 기반 메서드는 전역적으로 정의된 Code 멤버를 통해 사용할 수 있습니다. 멤버를 참조한 다음, 인스턴스 및 메서드 이름을 차례로 사용하여 이 항목들에 액세스합니다. 다음 예제에서는 StandardCost 값을 달러에서 유로로 변환하는 인스턴스 메서드ToEUR를 호출합니다.
=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)
비고
보고서 디자이너에서 사용자 지정 어셈블리는 한 번 로드되며 Visual Studio를 닫을 때까지 언로드되지 않습니다. 보고서를 미리 보고 보고서에 사용되는 사용자 지정 어셈블리를 변경한 다음 보고서를 다시 미리 보는 경우 두 번째 미리 보기에는 변경 내용이 표시되지 않습니다. 어셈블리를 다시 로드하려면 Visual Studio를 닫고 다시 연 다음 보고서를 미리 봅니다.
코드에 액세스하는 방법에 대한 자세한 내용은 식을 통해 사용자 지정 어셈블리에 액세스하는 것을 참조하세요.
사용자 지정 어셈블리에 기본 제공 컬렉션 전달
Globals 또는 Parameters 컬렉션과 같은 기본 제공 컬렉션을 처리를 위해 사용자 지정 어셈블리에 전달하려면 코드 프로젝트의 어셈블리 참조를 기본 제공 컬렉션을 정의하는 어셈블리에 추가하고 올바른 네임스페이스에 액세스해야 합니다. 보고서 서버(서버 보고서)에서 실행되는 보고서에 대한 사용자 지정 어셈블리를 개발하는지 또는 .NET 애플리케이션(로컬 보고서)에서 로컬로 실행되는 보고서에 대한 사용자 지정 어셈블리를 개발하는지에 따라 참조해야 하는 어셈블리가 다릅니다. 자세한 내용은 다음을 참조하세요.
Namespace: Microsoft.ReportingServices.ReportProcessing.ReportObjectModel
어셈블리(로컬 보고서): Microsoft.ReportingServices.ProcessingObjectModel.dll
어셈블리(서버 보고서): Microsoft.ReportViewer.ProcessingObjectModel.dll
Fields 및 ReportItems 컬렉션의 콘텐츠는 런타임에 동적으로 변경 될 수 있으므로 사용자 지정 어셈블리(예: 멤버 변수)에 대한 호출을 통해 유지해서는 안 됩니다. 동일한 권장 사항은 일반적으로 모든 기본 제공 컬렉션에 적용됩니다.
또한 참조하십시오
보고서에 코드 추가(SSRS)
보고서에서 사용자 지정 어셈블리 사용
보고서에 어셈블리 참조 추가(SSRS)
보고서 작성 서비스 자습서(SSRS)
식 예(보고서 작성기 및 SSRS)
보고서 샘플(보고서 작성기 및 SSRS)