3단원: 매개 변수를 추가하여 목록에서 여러 값 선택(보고서 작성기 2.0)
이 단원에서는 여러 값을 사용할 수 있도록 매개 변수를 변경하는 방법에 대해 배웁니다. 이를 다중값 매개 변수라고 합니다. 기본적으로 매개 변수에는 단일 값만 허용됩니다. 이전 단원에서 만든 매개 변수인 BusinessPersonID 및 DayoftheWeek에는 단일 값만 허용됩니다. 매개 변수에 여러 값이 허용되도록 수정하려면 매개 변수가 쿼리 매개 변수에서 자동으로 만들어진 것(예: BusinessPersonID)인지, 보고서 데이터 창을 사용하여 수동으로 만든 것(DayoftheWeek)인지를 알아야 합니다.
여러 값을 허용하도록 보고서 매개 변수를 수정하려면 보고서 매개 변수 속성만 설정하면 됩니다. 보고서 매개 변수가 쿼리 매개 변수 기반이라면 쿼리도 변경해야 합니다. 필터에서 매개 변수를 사용하는 경우에는 필터 연산자를 변경하여 단일 값 대신 값 집합을 지정해야 합니다.
기존 데이터 집합을 바꾸려면
보고서 데이터 창에서 데이터 집합 DataSet1을 마우스 오른쪽 단추로 클릭한 다음 쿼리를 클릭합니다.
텍스트 기반 쿼리 디자이너가 열립니다.
입력란에서 텍스트를 다음 쿼리로 바꿉니다.
SELECT SH.OrderDate ,DATENAME(weekday, SH.OrderDate) as Weekday ,SH.SalesOrderNumber ,SD.OrderQty ,SD.LineTotal ,P.Name AS [Product] ,PS.Name AS [Subcategory] FROM Sales.SalesPerson SP INNER JOIN Sales.SalesOrderHeader AS SH ON SP.BusinessEntityID = SH.SalesPersonID INNER JOIN Sales.SalesOrderDetail AS SD ON SH.SalesOrderID = SD.SalesOrderID INNER JOIN Production.Product AS P ON SD.ProductID = P.ProductID INNER JOIN Production.ProductSubcategory AS PS ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PS.ProductCategoryID WHERE PC.Name = 'Clothing' AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate)) AND SH.SalesPersonID IN (@BusinessPersonID)
다음 쿼리는 조건이 동등(=)에서 포함(IN)으로 변경되었다는 점을 제외하면 이전 쿼리와 동일합니다.
AND SH.SalesPersonID IN (@BusinessPersonID)
실행(!) 단추를 클릭합니다. 쿼리 매개 변수를 입력하라는 메시지가 표시되면 다음 표를 사용하여 값을 입력합니다. 쿼리 디자이너에서는 다중값 매개 변수 테스트를 지원하지 않습니다.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
확인을 클릭합니다.
BusinessPersonID가 290인 영업 사원 Ranjit Varkey Chudukatil에 대한 결과 집합이 나타납니다.
여러 값을 허용하도록 BusinessPersonID 보고서 매개 변수를 편집하려면
보고서 데이터 창에서 매개 변수를 확장하고 BusinessPersonID 매개 변수를 두 번 클릭합니다.
다중 값 허용 옵션을 선택합니다.
확인을 클릭합니다.
미리 보기를 클릭합니다. 보고서가 자동으로 실행됩니다. BusinessPersonID의 드롭다운 목록에 모든 영업 사원 이름이 표시됩니다.
[!참고]
(모두 선택) 값은 다중값 매개 변수의 사용 가능한 값 드롭다운 목록에서 첫 번째 값으로 제공됩니다. 이 확인란을 사용하여 모든 값을 선택하거나 선택 취소할 수 있습니다.
보고서 매개 변수에 대한 유효한 값을 입력하기 위해 새 데이터 집합을 추가하려면
디자인 뷰로 전환합니다.
보고서 데이터 창의 도구 모음에서 새로 만들기를 클릭하고 데이터 집합을 클릭합니다. 데이터 집합 속성 대화 상자가 열립니다.
이름에 WeekDaysfromQuery를 입력합니다.
쿼리 유형에서 텍스트가 선택되어 있는지 확인합니다.
쿼리 디자이너를 클릭한 다음 텍스트로 편집을 클릭합니다.
쿼리 창에 다음 쿼리를 붙여 넣습니다.
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekdayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekdayNumber
쿼리 디자이너 도구 모음에서 실행(!) 단추를 클릭합니다. 결과 집합에 서수와 요일이 표시됩니다.
확인을 두 번 클릭하여 데이터 집합 속성 대화 상자를 종료합니다.
보고서 데이터 창에 데이터 집합 WeekDaysfromQuery가 나타납니다.
여러 값, 기본 값 및 유효한 값을 허용하도록 매개 변수를 편집하려면
보고서 데이터 창에서 매개 변수를 확장하고 DayoftheWeek를 두 번 클릭합니다. 보고서 매개 변수 속성 대화 상자가 열립니다.
다중 값 허용을 선택합니다.
사용 가능한 값을 클릭합니다.
쿼리에서 값 가져오기를 선택합니다.
데이터 집합의 드롭다운 목록에서 WeekDaysfromQuery를 선택합니다.
값 필드의 드롭다운 목록에서 WeekdayNumber를 선택합니다.
레이블 필드의 드롭다운 목록에서 Weekday를 선택합니다.
사용자가 매개 변수 값을 선택할 때는 레이블에서 선택하지만 보고서에는 해당 값이 사용됩니다. 이 때문에 기본값이나 필터를 설정할 때 주의해야 합니다. 즉, 값은 WeekdayNumber 필드에 대한 정수 값이어야 합니다.
기본값을 클릭합니다.
값 지정을 선택합니다.
추가를 클릭합니다.
값에서 Friday를 6으로 바꿉니다. 요일 번호와 요일 이름을 모두 제공하는 데이터 집합에서 값을 가져오므로 기본값은 요일 번호를 지정해야 합니다. 값 6은 Saturday를 나타냅니다.
추가를 클릭합니다.
값에 7을 입력합니다. 이 값은 Sunday를 나타냅니다.
확인을 클릭합니다.
보고서를 미리 보기 전에 DayoftheWeek 매개 변수가 여러 값을 허용하기 때문에 테이블에서 IN 연산자를 사용하도록 필터 식을 변경해야 합니다.
다중값 매개 변수를 사용하도록 필터를 변경하려면
보고서 데이터 창에서 DataSet1을 마우스 오른쪽 단추로 클릭한 다음 데이터 집합 속성을 클릭합니다.
필터를 클릭합니다. 1단원에서 이미 DayoftheWeek에 대한 필터를 추가했습니다.
식의 드롭다운 목록에서 값이 [Weekday]인지 확인합니다.
연산자를 등호(=)에서 In으로 변경합니다.
값에 [@DayoftheWeek.Label]을 입력합니다.
요일 이름은 요일의 숫자 필드가 아니라 레이블 필드와 비교되므로 매개 변수 레이블을 지정합니다.
확인을 클릭합니다.
이제 테이블에 대한 필터가 In 연산자를 사용하여 Weekday 필드의 값을 DayoftheWeek 매개 변수의 레이블과 비교하도록 설정됩니다. 보고서 매개 변수에 대해 다중값을 선택하면 필터는 테이블의 각 행을 테스트하여 Weekday 필드가 DayoftheWeek 컬렉션에 있는지 확인합니다.
실행을 클릭하여 보고서를 미리 봅니다. 보고서에 보고서 매개 변수 DaysoftheWeek가 앞서 지정한 기본값에 대한 레이블인 Saturday 및 Sunday를 기본값으로 표시합니다. 드롭다운 목록을 사용하여 DayoftheWeek 매개 변수의 값을 여러 개 선택합니다.
다음 단계
보고서 매개 변수 속성을 단일 값에서 다중값으로 변경하고, 다중값 매개 변수 컬렉션을 사용하도록 필요한 쿼리, 필터 및 식 변경 작업을 수행했으며, 식에 다중값 매개 변수를 사용하는 방법을 배웠습니다. 다음 단원에서는 이전 매개 변수에서 선택된 값을 기반으로 하여 값이 조건부로 입력되는 매개 변수를 만드는 방법을 배웁니다. 4단원: 연계 매개 변수 추가(보고서 작성기 2.0)를 참조하십시오.