5단원: 사용자 정의 함수에 전달할 보고서 매개 변수 추가

업데이트: 2006년 12월 12일

보고서 매개 변수는 데이터 집합 쿼리의 저장 프로시저나 사용자 정의 함수(ufn)에 전달된 입력 매개 변수에 바인딩될 수 있습니다. 사용자 정의 함수는 테이블 값 또는 스칼라(단일 결과) 값을 반환할 수 있습니다. 데이터 집합 쿼리는 정의에 따라 사용자 정의 함수나 저장 프로시저에서 단일 결과를 검색합니다. 저장 프로시저에 비해 사용자 정의 함수가 가지는 한 가지 이점은 Transact-SQL SELECT 문에 사용자 정의 함수를 직접 포함하여 함수 결과를 쿼리 결과 집합의 다른 열과 결합할 수 있다는 것입니다.

사용자 정의 함수 및 저장 프로시저는 배열인 다중값 매개 변수를 직접 사용하지 않습니다. 다중값 배열을 저장 프로시저에 전달하려면 Visual Basic 함수 JOIN을 사용하여 모든 값의 연결 문자열을 만들고 사용자 정의 함수를 작성하여 선택한 구분 기호로 구분된 다중 선택 사항이 포함된 문자열 매개 변수를 사용합니다.

사용자 정의 함수인 ufnGetContactInformation은 Person.Contact 테이블에 대한 데이터베이스 식별자를 사용하여 ContactID, Name, Phone, EmailAddress, JobTitle 및 ContactType에 대한 값을 검색합니다. 이 보고서에서는 표시할 필드의 미리 정의된 하위 집합을 사용자가 선택할 수 있도록 매개 변수를 만듭니다.

이 단원에서는 대리점의 연락처로 나열된 담당자에 대한 데이터베이스 식별자를 사용하는 매개 변수가 있는 "Contact Information"이라는 새 보고서를 만듭니다. 또한 AdventureWorks 데이터베이스에서 사용자 정의 함수인 ufnGetContactInformation을 호출하는 쿼리를 만들고 보고서 매개 변수를 사용자 정의 함수의 입력 매개 변수인 @ContactID에 바인딩합니다.

사용자는 사용할 배경색 및 텍스트 색에 대한 매개 변수를 만들고 보고서 주위의 공백을 제거하며 여백 및 보고서 너비를 설정하여 이 보고서가 Resellers Worldwide 보고서에 포함된 보고서로 사용될 수 있도록 준비합니다. 또한 주 보고서에서 연락처 정보에 대해 표시할 필드를 지정할 수 있도록 이 보고서에 대해 다중값 매개 변수를 만듭니다.

Advanced Parameters Tutorial 보고서 서버 프로젝트를 열려면

  1. SQL Server Business Intelligence Development Studio에서 Advanced Parameters Tutorial 보고서 서버 프로젝트가 아직 열려 있지 않으면 이를 엽니다.

사용자 정의 함수에서 새 보고서를 만들려면

  1. 솔루션 탐색기에서 보고서 폴더를 마우스 오른쪽 단추로 클릭합니다. 추가, 새 항목을 차례로 선택합니다. 새 항목 추가 대화 상자가 열립니다.

  2. 템플릿 창에서 보고서를 선택합니다.

  3. 이름 입력란에 Contact Information.rdl을 입력합니다.

  4. 추가를 클릭합니다. 보고서가 데이터 뷰에서 열립니다.

  5. 데이터 집합 드롭다운 목록에서 <새 데이터 집합>을 선택합니다. 데이터 집합 대화 상자가 열립니다.

  6. 쿼리 탭의 이름 입력란에 ContactInformation을 입력합니다.

  7. 데이터 원본Resellers인지 확인합니다.

  8. 명령 유형Text인지 확인합니다.

  9. 쿼리 문자열 창에 다음 쿼리를 붙여 넣습니다.

    SELECT udf.ContactID, udf.FirstName + N' ' + udf.LastName AS Name,
       c.Phone, c.EmailAddress, udf.JobTitle, udf.ContactType
       FROM ufnGetContactInformation(@ContactID) udf
       JOIN Person.Contact c ON udf.ContactID = c.ContactID
    

    이 쿼리는 @ContactID라는 매개 변수를 사용하여 데이터베이스 식별자를 ufnGetContactInformation이라는 사용자 정의 함수에 전달하며 이 함수는 ContactID를 입력 매개 변수로 사용합니다.

  10. 도구 모음에서 실행(!)을 클릭합니다. 쿼리 매개 변수 정의 대화 상자가 열립니다.

  11. @ContactID에 대한 매개 변수 값 열에 1을 입력합니다. 결과 집합에서는 ContactID로 식별된 대리점 연락처에 대한 연락처 정보를 보여 줍니다. 결과 집합에 반환된 열은 사용자 함수에 정의됩니다.

  12. (옵션) @ContactID 쿼리 매개 변수가 ContactID 보고서 매개 변수에 바인딩되어 있는지 확인합니다. 보고서 도구 모음에서 선택한 데이터 집합 편집(...), 매개 변수 탭을 차례로 클릭합니다. @ContactID 매개 변수는 =Parameters!ContactID.Value 값으로 설정됩니다.

다음 절차에서는 ContactID 보고서 매개 변수에 대한 기본값을 만듭니다. 각 매개 변수에 대해 기본값을 제공하면 미리 보기를 클릭할 때 보고서가 자동으로 처리됩니다.

ContactID에 대한 기본값을 추가하려면

  1. 보고서 메뉴에서 보고서 매개 변수를 클릭합니다. 매개 변수 창에 ContactID가 선택된 상태로 보고서 매개 변수 대화 상자가 열립니다.

  2. 속성 섹션의 기본값 섹션에서 쿼리 사용 안 함을 선택합니다. 1을 입력합니다.

  3. 확인을 클릭합니다.

다음 절차에서는 표시할 연락처 정보를 선택할 때 사용할 다중값 문자열 매개 변수를 만들고 Phone, Email 또는 None에 대해 쿼리를 사용하지 않는 사용 가능한 값 목록을 만듭니다.

FieldsToDisplay 보고서 매개 변수를 만들려면

  1. 레이아웃 뷰에서 보고서 메뉴의 보고서 매개 변수를 선택합니다. 보고서 매개 변수 대화 상자가 열립니다.

  2. 추가를 클릭합니다. 기본값이 지정된 새 매개 변수가 생성됩니다.

  3. 속성 섹션의 이름 입력란에 FieldsToDisplay를 입력합니다. 데이터 형식이 String인지 확인합니다.

  4. 프롬프트에 **Select contact information to display:**를 입력합니다.

  5. 다중값 옵션을 선택합니다.

  6. 빈 값 허용 옵션이 선택되어 있는지 확인합니다.

  7. 사용 가능한 값 섹션에서 쿼리 사용 안 함을 선택합니다. 다음 표를 사용하여 값을 입력합니다.

레이블

Phone

Phone

Email

EmailAddress

None

<비어 있음>

매개 변수에 사용 가능한 값이 있는 경우 <비어 있음>인 사용 가능한 값을 제공하여 빈 값 허용 옵션을 선택해야 합니다.

다음 절차에서는 이 보고서에 대한 레이아웃을 만듭니다. 보고서는 주 보고서에 포함된 보고서로 사용되므로 연락처 이름과 직책이 한 개의 텍스트 상자에 표시되고 전자 메일 및 전화 정보가 한 개의 텍스트 상자에 조건부로 표시되어 레이아웃이 간단해집니다.

이 정보에 대한 보고서 레이아웃을 만들려면

  1. 레이아웃 탭을 클릭합니다. 보고서가 레이아웃 뷰에서 열립니다.

  2. 도구 상자에서 테이블 보고서 항목을 디자인 화면으로 끕니다.

  3. 열 제목을 마우스 오른쪽 단추로 클릭하고 열 삭제를 선택합니다. 두 개의 열이 남습니다.

  4. 다음 식을 자세히 행의 첫 번째 텍스트 상자에 붙여 넣습니다.

    =Fields!Name.Value & vbCrLf & "[ " & Fields!JobTitle.Value & " ]"
    
  5. 다음 식을 자세히 행의 두 번째 텍스트 상자에 붙여 넣습니다.

    =IIF((Parameters!FieldsToDisplay.Count=1) AND 
       (InStr("None",Parameters!FieldsToDisplay.Label(
              Parameters!FieldsToDisplay.Count-1))>0),"",
        IIF(InStr(Join(Parameters!FieldsToDisplay.Value,","),
           "EmailAddress")>0,Fields!EmailAddress.Value,"") + 
    vbCrLf + IIF(InStr(Join(Parameters!FieldsToDisplay.Value,","),
           "Phone")>0,Fields!Phone.Value,""))
    

    이 식은 FieldsToDisplay 다중값 매개 변수에 대해 선택한 값만 검색합니다. NONE을 선택한 경우(매개 변수가 하나뿐이고 레이블이 None인 경우) 식은 공백으로 계산됩니다. EmailAddress가 있는 경우 식의 일부는 "EmailAddress"로 계산됩니다. Phone이 있는 경우 식의 일부는 "Phone"으로 계산됩니다. 이러한 두 개의 값은 캐리지 리턴으로 연결됩니다. 계산된 전체 식은 두 번째 상자의 내용에 나타납니다.

    이 예에서는 다음을 보여 줍니다.

    • 다중값 매개 변수에 대해 선택한 값의 개수 찾기: Parameters!FieldsToDisplay.Count
    • 다중값 매개 변수에 대해 특정 문자열의 배열에서 마지막 레이블 테스트(이 경우 "None"): InStr("None",Parameters!FieldsToDisplay.Label(Parameters!FieldsToDisplay.Count-1))>0
    • 다중값 매개 변수에서 값을 찾았는지 여부에 따라 조건부로 문자열 반환(FieldsToDisplay 다중값 매개 변수에 대해 선택된 모든 값의 연결된 문자열을 검색하여 EmailAddress가 있는 경우 데이터 집합에서 EmailAddress의 특정 값을 반환하고 없는 경우 공백을 반환함): IIF(InStr(Join(Parameters!FieldsToDisplay.Value,","),"EmailAddress")>0,Fields!EmailAddress.Value,"")

    [!참고] Visual Basic 함수 IIF는 자신에게 전달된 모든 함수 매개 변수 값을 계산하므로 이 식을 Null일 수 있는 데이터 집합 필드에 사용할 수 없습니다.

  6. (옵션) 미리 보기를 클릭합니다. 두 개의 매개 변수에 대한 매개 변수 값을 변경하고 결과를 봅니다.

다음 절차에서는 머리글 및 바닥글을 해제하고, 테이블 너비를 설정하고, 추가 공백을 제거하며 주 보고서와 동일한 글꼴 및 배경을 설정하여 주 보고서 내에서 잘 표시되도록 서식을 지정하여 이 보고서가 포함된 보고서로 사용될 수 있도록 합니다. 또한 배경색 및 글꼴 색이 주 보고서에서 매개 변수로 전달될 수 있도록 매개 변수를 제공합니다.

공백을 제거하고 보고서 크기를 설정하려면

  1. 테이블 내부를 클릭하여 테이블 핸들을 표시합니다.

  2. 자세히 행 핸들을 마우스 오른쪽 단추로 클릭합니다. 바로 가기 메뉴에서 테이블 머리글테이블 바닥글을 선택하여 해제로 설정합니다. 이제 테이블에 자세히 행만 표시됩니다.

    다음 3개의 단계에서는 보고서 너비를 제시된 크기로 조정해야 합니다. 이 크기는 다음 단원에서 주 보고서에 포함된 보고서 항목을 추가할 때 필요합니다.

  3. 테이블을 선택합니다. 속성 창에서 테이블 너비가 3인지 확인합니다. 이 값을 연락처 정보를 표시하는 데 필요한 최소값으로 조정합니다.

    포함된 보고서에 대해 정의하는 테이블 너비에 따라 포함된 보고서가 주 보고서에서 표시될 때의 모양이 결정됩니다. 포함된 보고서에 대해 고정 크기를 설정하려면 높이 및 너비를 원하는 값으로 설정합니다. 텍스트 상자의 CanGrowCanShrink 속성을 설정하여 텍스트 상자가 텍스트 내용에 맞게 세로로 늘어나고 줄어들게 할 수도 있습니다. CanGrowCanShrink는 가로 너비에는 적용되지 않습니다. 또한 현재는 텍스트에 따라 너비가 자동으로 조정되도록 텍스트 상자를 설정할 수 없습니다.

  4. 첫 번째 열 머리글 텍스트 상자를 선택합니다. 속성 창에서 Width로 스크롤하여 1.5를 입력하거나 기본 측정값을 사용하여 너비를 테이블의 반으로 설정하는 데 필요한 값을 입력합니다.

  5. 두 번째 열 머리글 텍스트 상자를 선택합니다. 속성 창에서 Width로 스크롤하여 1.5를 입력하거나 기본 측정값을 사용하여 너비를 테이블의 반으로 설정하는 데 필요한 값을 입력합니다.

  6. 테이블을 선택합니다. 화살표 키를 사용하여 테이블을 보고서 페이지의 맨 위로 이동하고 테이블 가장자리를 보고서 가장자리와 맞춥니다.

  7. 마우스를 사용하여 보고서 화면(점선 흰색 배경)의 가장자리를 포인터로 가리킵니다. 마우스가 양방향 화살표로 변경되면 보고서 화면의 가장자리를 클릭한 채로 테이블의 가장자리 가까이로 이동합니다. 이렇게 하면 보고서를 렌더링할 때 공백이 제거됩니다.

  8. 이와 유사한 방식으로 보고서 화면을 테이블의 아래쪽 가까이로 이동하여 보고서 페이지의 아래쪽 공백을 제거합니다.

매개 변수를 추가하여 색을 설정하려면

  1. 레이아웃 뷰에서 보고서 메뉴의 보고서 매개 변수를 선택합니다. 보고서 매개 변수 대화 상자가 열립니다.

  2. 추가를 클릭합니다. 기본값이 지정된 새 매개 변수가 생성됩니다.

  3. 속성 섹션의 이름 입력란에 BackgroundColor를 입력합니다. 데이터 형식이 String인지 확인합니다.

  4. 숨김 옵션을 선택합니다. 프롬프트 입력란이 비활성화됩니다.

  5. 빈 값 허용 옵션의 선택을 취소합니다.

  6. 사용 가능한 값 섹션에서 쿼리 사용 안 함이 선택되어 있는지 확인합니다. 값 테이블은 비워 둡니다.

  7. 기본값 섹션에서 쿼리 사용 안 함을 클릭하고 Azure를 입력합니다.

    포함된 보고서에는 주 보고서에서 포함된 보고서로 전달된 매개 변수 값이 사용됩니다. 주 보고서에서 특정 매개 변수에 대한 값을 지정하지 않는 경우 포함된 보고서 매개 변수 기본값이 사용됩니다.

  8. 1-6단계를 따라 FontColor라는 새 매개 변수를 만듭니다.

  9. 기본값 섹션에서 쿼리 사용 안 함을 클릭하고 SteelBlue를 입력합니다.

  10. 확인을 클릭합니다.

  11. 레이아웃 뷰에서 테이블의 자세히 행을 마우스 오른쪽 단추로 클릭합니다. 속성 창에서 BackgroundColor로 스크롤합니다. 값을 다음 식으로 설정합니다.

    =Parameters!BackgroundColor.Value
    
  12. 속성 창에서 Color로 스크롤합니다. 값을 다음 식으로 설정합니다.

    =Parameters!FontColor.Value
    
  13. 미리 보기를 클릭합니다. 테이블 행의 배경 및 글꼴 색이 BackgroundColorFontColor의 매개 변수 값으로 설정되어 있는지 확인합니다.

보고서 설명을 추가하려면

  1. 레이아웃 탭을 클릭합니다.

  2. 보고서 메뉴에서 보고서 속성을 선택합니다. 보고서 속성 대화 상자가 열립니다.

  3. 설명 입력란에 다음 텍스트를 입력합니다. Subreport to show contact information이라는 텍스트를 입력합니다.

  4. 확인을 클릭합니다.

다음 단계

대리점 연락처 정보를 표시하는 보고서를 성공적으로 만들었습니다. 또한 너비를 설정하고 추가 공백을 제거하며 모양 및 내용을 제어하는 매개 변수를 만드는 등 서식을 지정하여 보고서가 포함된 보고서로 사용될 수 있도록 했습니다. 다음 단원에서는 이 보고서를 포함된 보고서로 Resellers Worldwide 보고서에 추가합니다. 6단원: 매개 변수가 있는 포함된 보고서 추가를 참조하십시오.

변경 내역

릴리스 내역

2006년 12월 12일

변경된 내용
  • 코드 예를 udf.ContactID = c.ContactID로 수정했습니다.

참고 항목

관련 자료

Reporting Services의 매개 변수 작업
사용자 정의 함수 기본 사항

도움말 및 정보

SQL Server 2005 지원 받기