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


Занятие 4. Добавление каскадных параметров (службы SSRS)

Каскадные параметры предоставляют способ управления большими объемами данных отчета. При каскадировании параметров список значений для одного параметра зависит от значения, выбранного для предыдущего параметра. Для каскадных параметров важен порядок следования, поскольку запрос набора данных для параметра, расположенного в списке дальше, включает ссылки на параметры, находящиеся в списке раньше его.

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

Добавление нового отчета в открытый проект сервера отчетов

  1. В обозревателе решений щелкните правой кнопкой мыши элемент Отчеты, укажите пункт Добавить и выберите команду Создать элемент.

  2. В диалоговом окне Добавить новый элемент в элементе Шаблоны выберите элемент Отчет.

  3. В поле Имя введите CascadingParameters.rdl и нажмите кнопку Добавить.

    Откроется конструктор отчетов, и в представлении «Проектирование» будет отображен новый RDL-файл.

Создание ссылки на общий источник данных

  1. На панели «Данные отчета» нажмите кнопку Создать и выберите Источник данных.

  2. В поле Имя введите AdventureWorks_Ref

  3. Выберите Использовать ссылку на общий источник данных.

  4. Из раскрывающегося списка выберите AdventureWorks.

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

Создание основного источника данных с запросом и параметрами запроса

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

  2. В поле Имя введите SalesbyCategory.

  3. Убедитесь, что в списке Источник данных выбран источник AdventureWorks_Ref.

  4. Убедитесь, что в списке Тип запроса выбран тип Текст.

  5. Ниже на панели запроса щелкните Конструктор запросов.

  6. Чтобы переключиться в текстовый конструктор запросов, нажмите кнопку переключателя Редактировать как текст.

  7. Вставьте следующий запрос:

    SELECT 
       PC.Name AS Category,
       PSC.Name AS Subcategory,
       P.Name AS Product,
       SOH.[OrderDate],
       SOH.SalesOrderNumber,
       SD.OrderQty, 
       SD.LineTotal
       FROM [Sales].[SalesPerson] SP 
          INNER JOIN [Sales].[SalesOrderHeader] SOH 
          ON SP.[BusinessEntityID] = SOH.[SalesPersonID]
          INNER JOIN Sales.SalesOrderDetail SD
          ON SD.SalesOrderID = SOH.SalesOrderID
          INNER JOIN Production.Product P
          ON SD.ProductID = P.ProductID
          INNER JOIN Production.ProductSubcategory PSC
          ON P.ProductSubcategoryID = PSC.ProductSubcategoryID
          INNER JOIN Production.ProductCategory PC
          ON PC.ProductCategoryID = PSC.ProductCategoryID
          WHERE (PC.Name = (@Category)
             AND PSC.Name = (@Subcategory)
             AND P.Name = (@Product))
    

    Теперь запрос содержит параметры запроса @Category, @Subcategory и @Product.

  8. Нажмите кнопку «Выполнить» (!) для просмотра результирующего набора. Откроется диалоговое окно Определение параметров запроса.

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

    Имя параметра

    Значение параметра

    @Category

    Components

    @Subcategory

    Brakes

    @Product

    Front Brakes

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

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

    Если запустить запрос, то каждый параметр запроса формирует соответствующий параметр отчета. Нажмите кнопку ОК дважды, чтобы закрыть конструктор запросов и диалоговое окно.

  11. На панели «Данные отчета» разверните узел «Параметры» и убедитесь, что появляются следующие параметры отчета: Category, Subcategory и Product.

  12. Значение каждого параметра запроса набора данных связано с параметром отчета с тем же именем (при необходимости). Чтобы убедиться в этом, на панели «Данные отчета» щелкните правой кнопкой мыши «SalesbyCategory» и выберите пункт Свойства набора данных.

    1. Нажмите Параметры.

    2. В столбце Имя параметра убедитесь, что выбраны имена @Category, @Subcategory и @Product.

    3. В столбце Значение параметра убедитесь, что выбраны имена [@Category], [@Subcategory] и [@Product].

      Эти простые выражения ссылаются на параметры отчета, видимые на панели «Данные отчета».

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

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

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

  2. В поле Имя введите CategoryValues.

  3. Убедитесь, что в списке Источник данных выбран источникAdventureWorks_Ref.

  4. Убедитесь, что в списке Тип запроса выбран тип Текст.

  5. Ниже панели Запрос щелкните Конструктор запросов.

  6. Чтобы переключиться в текстовый конструктор запросов, нажмите кнопку переключателя Редактировать как текст.

  7. На панели Запрос вставьте следующий текст запроса:

    SELECT DISTINCT Name AS Category FROM Production.ProductCategory
    

    Команда SELECT DISTINCT извлекает только уникальные значения столбца.

  8. Нажмите кнопку Выполнить (!), чтобы увидеть результирующий набор. В столбце Category появляется четыре значения. аксессуары, велосипеды, одежда и запасные части.

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

Далее будут установлены свойства для параметра отчета Category, чтобы использовать значения из запроса как для допустимых значений, так и для значений по умолчанию.

Определение допустимых значений и значений по умолчанию параметра отчета

  1. На панели «Данные отчета» в папке «Параметры» щелкните параметр Category правой кнопкой мыши и выберите Свойства параметра.

  2. В поле Имя убедитесь, что выбрана «Category».

  3. Нажмите кнопку Допустимые значения.

  4. Нажмите кнопку Получать значения из запроса. Появятся три поля.

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

  6. В поле Значение щелкните «Category».

  7. В поле Метка щелкните «Category».

  8. Нажмите кнопку Значения по умолчанию.

  9. Нажмите кнопку Получать значения из запроса.

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

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

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

Далее будет изменен параметр @Subcategory так, чтобы он зависел от значения, выбранного для @Category.

Добавление набора данных значений для параметра отчета «Subcategory»

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

  2. В поле Имя введите SubcategoryValues.

  3. На панели «Запрос» вставьте следующий текст запроса:

    SELECT DISTINCT PSC.Name AS Subcategory 
       FROM Production.ProductSubcategory AS PSC
          INNER JOIN Production.ProductCategory AS PC
          ON PC.ProductCategoryID = PSC.ProductCategoryID
          WHERE PC.Name = (@Category)
    
  4. Нажмите кнопку ОК. 

  5. Набор данных SubcategoryValues появится на панели «Данные отчета». При открытии конструктора запросов, выполнении запроса и вводе в качестве категории «Components», в наборе результатов будет отображено 14 строк.

Далее будут установлены свойства для параметра отчета @Subcategory, чтобы использовать значения из запроса как для допустимых значений, так и для значений по умолчанию.

Определение допустимых значений и значений по умолчанию параметра отчета «Subcategory»

  1. На панели «Данные отчета» в папке «Параметры» щелкните параметр Subcategory правой кнопкой мыши и выберите Свойства параметра.

  2. Нажмите кнопку Допустимые значения.

  3. Нажмите кнопку Получать значения из запроса.

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

  5. В поле Значение щелкните Subcategory.

  6. В поле Метка щелкните Subcategory.

  7. Нажмите кнопку Значения по умолчанию.

  8. Нажмите кнопку Получать значения из запроса.

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

  10. В поле Значение щелкните Subcategory.

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

Далее будет создан параметр @Product, который зависит как от значения @Category, так и от значения @Subcategory.

Добавление набора данных значений для параметра отчета «Product»

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

  2. В поле Имя введите ProductValues.

  3. На панели «Запрос» вставьте следующий текст запроса:

    SELECT DISTINCT P.Name AS Product
    FROM Production.Product P
       INNER JOIN Production.ProductSubcategory AS PSC
       ON P.ProductSubcategoryID = PSC.ProductSubcategoryID
       INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PSC.ProductCategoryID
    WHERE (PC.Name = (@Category)
       AND PSC.Name = (@Subcategory))
    
  4. Нажмите кнопку ОК.

    В области данных отчета появится набор данных ProductValues с одним полем Product.

Далее настройте свойства для параметра @Product, чтобы использовались значения этого запроса как для его допустимых значений, так и для значений по умолчанию.

Определение допустимых значений и значений по умолчанию параметра отчета «Product»

  1. На панели «Данные отчета» в папке «Параметры» щелкните правой кнопкой мыши параметр «Product», а потом выберите Свойства параметра.

  2. Нажмите кнопку Допустимые значения.

  3. Нажмите кнопку Получать значения из запроса.

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

  5. В поле Значение щелкните Product.

  6. В поле Метка щелкните Product.

  7. Нажмите кнопку Значения по умолчанию.

  8. Нажмите кнопку Получать значения из запроса.

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

  10. В поле Значение щелкните Product.

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

Затем добавьте таблицу, чтобы видеть результат выбора значения для каждого каскадного параметра.

Добавление таблицы для отображения результатов

  1. В представлении «Проект» добавьте таблицу.

  2. В области данных отчета из набора данных SalesbyCategory перетащите следующие поля в 3 ячейки строки детализации таблицы: SalesOrderNumber, OrderQty, LineTotal.

  3. Перетащите Category из набора данных SalesbyCategory на панель RowGroups, поместив над группой Сведения.

  4. Перетащите Subcategory из набора данных SalesbyCategory на панель Группы строк, поместив под Category.

  5. Перетащите Product из набора данных SalesbyCategory на панель Группы строк, поместив под Subcategory.

  6. Перетащите OrderDate из набора данных SalesbyCategory на панель Группы строк, поместив под Product.

  7. Выполните форматирование следующих ячеек (при необходимости): [LineTotal] в денежном формате, [OrderDate] в формате даты.

Тестирование каскадных параметров

  1. Нажмите кнопку «Просмотр».

    Отчет будет выполнен автоматически, потому что для каждого параметра отчета задано значение по умолчанию.

  2. Из раскрывающегося списка «Категория» выберите Components.

  3. Из раскрывающегося списка «Subcategory» выберите значение Brakes.

  4. Из раскрывающегося списка «Product» выберите значение Front Brakes.

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

  5. Щелкните Просмотр отчета на панели инструментов средства просмотра отчетов.

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

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

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