Перейти к содержанию

Параметры: различия между версиями

Материал из Химсофт Вики
Строка 25: Строка 25:
==Подключение параметра к таблице==
==Подключение параметра к таблице==
*выделить таблицу на основном поле конструктора или в дереве;
*выделить таблицу на основном поле конструктора или в дереве;
*нажать на кнопку диалогового окна свойств <code>Property dialog…</code> (рис. 4.17);
*нажать на кнопку диалогового окна свойств <code>Property dialog…</code>;
*в открывшемся окне в левом столбце перейти на вкладку <code>Table - Filters</code> и нажать на кнопку <code>+</code> (рис. 5.4);
*в открывшемся окне в левом столбце перейти на вкладку <code>Table - Filters</code> и нажать на кнопку <code>+</code> (рис. 5.4);
[[Файл:Parameter4.png|center|thumb]]
*в результате появится «пустой» параметр, не имеющий свойств;
*в результате появится «пустой» параметр, не имеющий свойств;
*для добавления свойств нажать на стрелку поля <code>Expression</code> и в раскрывшемся списке выбрать поле из <code>DataSet</code> (например, <code>=Fields!lab_name.Value</code>), по которому будет проводиться группировка (рис. 5.5);
*для добавления свойств нажать на стрелку поля <code>Expression</code> и в раскрывшемся списке выбрать поле из <code>DataSet</code> (например, <code>=Fields!lab_name.Value</code>), по которому будет проводиться группировка (рис. 5.5);
[[Файл:Parameter5.png|center|thumb]]
*в поле <code>Operator:</code> выбрать оператор <code>Equal</code> (рис. 5.6);
*в поле <code>Operator:</code> выбрать оператор <code>Equal</code> (рис. 5.6);
[[Файл:Parameter6.png|center|thumb]]
*в разделе <code>Values</code> в поле <code>Expression</code> нажать стрелку меню и выбрать из списка значение <code>Expression…</code> (рис. 5.6);
*в разделе <code>Values</code> в поле <code>Expression</code> нажать стрелку меню и выбрать из списка значение <code>Expression…</code> (рис. 5.6);
*в открывшемся окне <code>Expression Editor</code> в левой части окна в области <code>Fields:</code> раскрыть группу <code>Parameters</code> и выбрать пункт <code>ReportParameterLaboratory</code> (рис. 5.7);
*в открывшемся окне <code>Expression Editor</code> в левой части окна в области <code>Fields:</code> раскрыть группу <code>Parameters</code> и выбрать пункт <code>ReportParameterLaboratory</code> (рис. 5.7);
[[Файл:Parameter7.png|center|thumb]]
*двойным кликом или кнопкой <code>Append</code> добавить пункт <code>ReportParameterLaboratory</code> в область <code>Expression:</code>;
*двойным кликом или кнопкой <code>Append</code> добавить пункт <code>ReportParameterLaboratory</code> в область <code>Expression:</code>;
*нажать кнопку <code>ОК</code> в окне <code>Expression Editor</code>;  
*нажать кнопку <code>ОК</code> в окне <code>Expression Editor</code>;  
*нажать кнопку <code>ОК</code> в окне <code>Table - Filters</code>;
*нажать кнопку <code>ОК</code> в окне <code>Table - Filters</code>;
*при формировании отчета перед выводом документа на экран появится колонка с параметром в качестве параметра (рис. 5.8).
*при формировании отчета перед выводом документа на экран появится колонка с параметром в качестве параметра (рис. 5.8).
[[Файл:Parameter8.png|center]]


==Создание каскадного параметра==
==Создание каскадного параметра==

Версия от 09:44, 25 декабря 2025

Общие сведения

В отчетах возможно:

  • использовать параметры для фильтрации или добавления данных, отображаемых в отчётах;
  • запрашивать у пользователей параметры, чтобы они могли управлять выводом;
  • задавать параметры автоматически.

Создание простого параметра

  • добавить еще один DataSet (п. 1.4, рис. 1.5-1.10), например, FilterLaboratory;
  • в качестве SQL-запроса в поле Query набора данных FilterLaboratory можно использовать SQL-запрос из набора данных MainDataSet или, по возможности, его упрощенный вариант (исключение неиспользуемых полей и соединений таблиц);
  • добавить параметр в дереве отчета (рис. 5.1);
  • в открывшемся окне на вкладке General (рис. 5.2)
    • в поле Name ввести название параметра, например, ReportParameterLaboratory (по умолчанию – ReportParameter1);
    • в поле Text for prompting users for a value: ввести текст-приглашение для выбора значения пользователем, например, «Выберите лабораторию:» (по умолчанию – ReportParameter1);
  • в открывшемся окне на вкладке General (рис. 5.3)
    • установить переключатель в значение From query (по умолчанию – Non-queried);
    • в поле Dataset: выбрать используемый набор данных FilterLaboratory;
    • в полях Value field: и Label field: установить необходимое поле из набора данных (например, lab_name);
    • в поле Condition: установить значение Value или Label (если в полях Value field: и Label field: указано одно и то же значение, то любой вариант);
    • в поле Direction: указать желаемый вариант сортировки (Ascending – по возрастанию, Descending – по убыванию);
    • нажать OK.

Подключение параметра к таблице

  • выделить таблицу на основном поле конструктора или в дереве;
  • нажать на кнопку диалогового окна свойств Property dialog…;
  • в открывшемся окне в левом столбце перейти на вкладку Table - Filters и нажать на кнопку + (рис. 5.4);
  • в результате появится «пустой» параметр, не имеющий свойств;
  • для добавления свойств нажать на стрелку поля Expression и в раскрывшемся списке выбрать поле из DataSet (например, =Fields!lab_name.Value), по которому будет проводиться группировка (рис. 5.5);
  • в поле Operator: выбрать оператор Equal (рис. 5.6);
  • в разделе Values в поле Expression нажать стрелку меню и выбрать из списка значение Expression… (рис. 5.6);
  • в открывшемся окне Expression Editor в левой части окна в области Fields: раскрыть группу Parameters и выбрать пункт ReportParameterLaboratory (рис. 5.7);
  • двойным кликом или кнопкой Append добавить пункт ReportParameterLaboratory в область Expression:;
  • нажать кнопку ОК в окне Expression Editor;
  • нажать кнопку ОК в окне Table - Filters;
  • при формировании отчета перед выводом документа на экран появится колонка с параметром в качестве параметра (рис. 5.8).

Создание каскадного параметра

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

  • для создания каскадного параметра на первом этапе создается простой параметр, при этом все этапы полностью повторяют пп. 5.2-5.3
    • создаем новый набор данных FilterFio с таким же или более коротким SQL-запросом;
    • создаем параметр ReportParameterFio (с принимаемым из набора данных значением fio);
    • при необходимости фильтрации таблицы по данному критерию подключаем созданный параметр к таблице с общим значением параметра =[fio] In (=Parameters!ReportParameterFio.Value);
    • если значение ФИО нужно только для однократного вывода на экран (например, для подписи документа), то шаг подключения параметра к таблице пропускается;
  • в результате создается второй параметр со значениями, не зависящими от первого;
  • для добавления зависимости необходимо в дереве отчета выбрать набор данных FilterFio правой кнопкой выбрать пункт меню Edit (рис. 5.9);
  • в отрывшемся окне в левой части выбрать раздел DataSet - Parameters и нажать на кнопку + (рис. 5.10);
  • в отрывшемся окне в поле Name (рис. 5.11) ввести имя параметра (например, SelectedLaboratory);
  • в поле Value нажать стрелку меню и выбрать пункт Expression… (рис. 5.11);
  • в левой части окна в области Fields: раскрыть группу Parameters и выбрать пункт ReportParameterLaboratory (рис. 5.12);
  • двойным кликом или кнопкой Append добавить пункт ReportParameterLaboratory в область Expression: (рис. 5.12);
  • нажать кнопку OK;
  • в оставшемся открытым окне свойств набора данных в левой части окна выбрать раздел DataSet - Query (рис. 5.13);
  • в поле Query: в конце запроса добавить условие WHERE fio In (@SelectedLaboratory) (рис. 5.13);

Таким образом, итоговые записи данного запроса будут браться не напрямую из набора данных БД, а после предварительной фильтрации на основе лаборатории, выбранной в первом параметре.

В результате (рис. 5.14) связанный параметр функции не активен, пока не будет определено значение основного параметра лаборатории.