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

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

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

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

  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. Вставьте следующий запрос:

    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.

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

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

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

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

    @Category

    Components

    @Subcategory

    Brakes

    @Product

    Front Brakes

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    SELECT DISTINCT Name AS Category FROM Production.ProductCategory
    

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

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

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

Далее будут установлены свойства для параметра отчета 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» появится в области «Данные отчета». Поле «Subcategory» содержит 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 над группой Details.

  4. Перетащите «Subcategory» из набора данных SalesbyCategory в область Row Groups пониже параметра «Category» .

  5. Перетащите «Product» из набора данных SalesbyCategory в область Row Groups пониже параметра «Subcategory» .

  6. Перетащите «OrderDate» из набора данных SalesbyCategory в область Row Groups пониже параметра «Product» .

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

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

  1. Нажмите кнопку «Предварительный просмотр».

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

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

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

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

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

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

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

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

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