Поделиться через


Занятие 3. Добавление однозначного параметра со списком доступных значений

Добавления: 17 июля 2006 г.

Доступные (или допустимые) значения представляют читателю отчета список возможных значений параметра отчета. Допустимые значения можно предоставить из запроса, специально разработанного для получения набора значений из источника данных; также можно предоставить стандартный набор значений. С помощью привязки набора доступных значений к запросу набора данных, который выполняется при обработке отчета, можно гарантировать, что из раскрывающегося списка могут быть выбраны только те значения, которые существуют в базе данных.

На этом занятии отчет Sales Orders будет изменяться для представления раскрывающегося списка доступных имен менеджеров по продажам из базы данных AdventureWorks. Необходимо будет установить свойство таблицы для отображения сообщения, когда в результирующем наборе для выбранного значения параметра не будет содержаться строк. При просмотре отчета с выбранным именем в нем отображаются продажи только для этого менеджера по продажам.

Открытие отчета Sales Orders

  1. В среде SQL Server Business Intelligence Development Studio откройте созданный на предыдущем занятии проект Tutorial сервера отчетов.

  2. В Обозревателе решений дважды щелкните отчет Sales Orders. Отчет откроется в представлении Макет.

  3. Перейдите на вкладку Данные.

Добавление параметра запроса в запрос набора данных AdventureWorks

  1. На вкладке Данные в раскрывающемся списке Наборы данных выберите AdventureWorks.

  2. Добавьте в запрос новый параметр запроса @SalesPersonID. Разверните в запросе предложение WHERE, чтобы включить в него следующее сравнение: AND S.SalesPersonID = (@SalesPersonID).

    Замените существующий запрос следующим:

    SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday,
        S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName, 
        C.ContactID
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    WHERE
        (
        S.OrderDate BETWEEN (@StartDate) AND (@EndDate) 
        AND
        S.SalesPersonID = (@SalesPersonID)
        )
    
    Aa337400.note(ru-ru,SQL.90).gifПримечание.
    Круглые скобки, в которые заключен параметр запроса, являются важной частью синтаксиса запроса.
  3. Нажмите кнопку Выполнить (!). При возникновении подсказки о вводе параметров запроса используйте для ввода значений следующую таблицу.

    @StartDate

    20010101

    @EndDate

    20030101

    @SalesPersonID

    286

  4. Нажмите кнопку ОК. Для менеджера по продажам по имени Ranjit Varkey Chudakatil появится результирующий набор с параметром SalesPersonID = 286.

  5. (Не обязательно) Убедитесь, что параметр запроса @SalesPersonID имеет значение: =Parameters!SalesPersonID.Value. Нажмите кнопку Изменить выбранный набор данных () и перейдите на вкладку Параметры.

  6. (Не обязательно) Убедитесь, что параметр отчета SalesPersonID был автоматически создан. В меню Отчет выберите команду Параметры отчета. Откроется диалоговое окно «Параметры отчета». Убедитесь, что параметр отчета SalesPersonID находится в области Параметры. Этот параметр будет изменен позже в другой процедуре текущего раздела.

    В следующей процедуре будет создан отдельный набор данных, содержащий значения для раскрывающегося списка доступных значений параметра отчета SalesPersonID.

Создание набора данных SalesPersons для доступных значений

  1. В раскрывающемся списке Набор данных выберите <СоздатьНовый набор данных>. Откроется диалоговое окно Набор данных.

  2. Введите имя нового набора данных. В поле Имя введите SalesPersons. Этот набор данных будет использоваться в качестве входного для списка допустимых значений.

  3. Вставьте на панель запроса следующий запрос Transact-SQL:

    SELECT SP.SalesPersonID, C.FirstName, C.LastName
    FROM   Sales.SalesPerson AS SP INNER JOIN
         HumanResources.Employee AS E ON E.EmployeeID = SP.SalesPersonID INNER JOIN
         Person.Contact AS C ON C.ContactID = E.ContactID
    
  4. Нажмите кнопку Выполнить (!). В результирующем наборе и в качестве полей в наборе данных SalesPersons появятся столбцы SalesPersonID, FirstName и LastName.

    Хотя вычисляемые поля можно добавить прямо в запрос (например, добавить LastName + N' ' + FirstName as Name в инструкцию SELECT в качестве дополнительного столбца), службы Reporting Services поддерживают создание новых вычисляемых полей из существующих полей набора данных. Эту возможность можно использовать в случае, когда запрос использует хранимые процедуры, возвращающие стандартный набор столбцов. В следующей процедуре будет создано новое поле для набора данных, являющееся комбинацией двух существующих полей.

Добавление нового вычисляемого поля набора данных

  1. В окне «Наборы данных» щелкните правой кнопкой мыши набор данных SalesPersons и выберите Добавить.

    Если окно «Наборы данных» не открылось, нажмите одновременно клавиши ALT+CTRL+D.

  2. В текстовое поле Имя введите значение Name.

  3. Выберите параметр Вычисляемое поле.

  4. Вставьте в это текстовое поле следующее выражение:

    =Fields!LastName.Value + ", " + Fields!FirstName.Value
    
  5. Нажмите кнопку ОК.

    На панели инструментов данных выберите Обновить поля. В коллекции полей для набора данных SalesPersons появится новое поле Name.

    В следующей процедуре будет задано свойство NoRows области данных таблицы. Текст этого свойства отображается, если данные, полученные для связанного с таблицей набора данных, ничего не содержат.

Добавление в таблицу сообщения NoRows

  1. Перейдите на вкладку Макет, чтобы перейти в режим разметки.

  2. В меню Вид выберите Окно свойств.

  3. В окне «Свойства» из раскрывающегося списка объектов выберите таблицу. По умолчанию таблице присваивается имя table1.

  4. В окне «Свойства» перейдите к свойству NoRows.

  5. Щелкните текстовое поле рядом со свойством NoRows и введите следующий текст:

    Результаты для этого сочетания параметров отсутствуют.

    Это сообщение будет отображаться, если результирующий набор для определенного параметра запроса не будет содержать строк.

  6. (Необязательно) Нажмите кнопку Предварительный просмотр. В поле параметра SalesPersonID введите 1. В области данных таблицы появится сообщение NoRows.

    В следующей процедуре будет изменен автоматически созданный параметр отчета SalesPersonID. Будут установлены свойства отчета для отображения в раскрывающемся списке доступных значений имени менеджера по продажам вместо идентификатора базы данных.

Установка свойств параметра отчета SalesPersonID

  1. В меню Отчет выберите команду Параметры отчета. Откроется диалоговое окно Параметры отчета. На панели «Параметры» появится параметр SalesPersonID.

  2. Из раскрывающегося списка Тип данных выберите тип Integer.

  3. В текстовое поле Запрос введите Выберите Sales Person:.

  4. В разделе Доступные значения выберите Из запроса.

  5. Из раскрывающегося списка Наборы данных выберите параметр SalesPersons.

  6. В поле Значение выберите SalesPersonID.

  7. В поле Метка выберите Name.

    В раскрывающемся списке допустимых значений для параметра SalesPersonID вместо SalesPersonID теперь будет отображаться имя каждого менеджера по продажам.

  8. В разделе Значения по умолчанию выберите Из запроса.

  9. Из раскрывающегося списка Наборы данных выберите параметр SalesPersons.

  10. В поле Значение выберите SalesPersonID.

  11. Нажмите кнопку ОК.

  12. Перейдите на вкладку Предварительный просмотр. В отчете появится раскрывающийся список с именами менеджеров по продажам.

Следующие шаги

Добавление однозначного параметра в существующий отчет успешно выполнено. Далее параметры DayoftheWeek и SalesOrderID будут преобразованы в многозначные. См. раздел Занятие 4. Добавление многозначного параметра, включающего «Выбрать все».

См. также

Другие ресурсы

Работа с параметрами в службах Reporting Services
Использование однозначных и многозначных параметров
Использование параметров в выражениях

Справка и поддержка

Получение помощи по SQL Server 2005