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

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

Материал из Химсофт Вики
 
(не показано 19 промежуточных версий 3 участников)
Строка 1: Строка 1:
==Общие сведения==
'''Параметр''' – это переменная, значение которой может быть определено как в самом отчете, так и вне его (программа, вызывающая отчет, может передавать в него значения параметров).  
В отчетах возможно:
*использовать параметры для фильтрации или добавления данных, отображаемых в отчётах;
*запрашивать у пользователей параметры, чтобы они могли управлять выводом;
*задавать параметры автоматически.


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


==Подключение параметра к таблице==
===Наиболее частые способы использования параметров===
*выделить таблицу на основном поле конструктора или в дереве;
*фильтрация данных по условию, заданному в параметре;
*нажать на кнопку диалогового окна свойств «Property dialog…» (рис. 4.17);
*печать значения параметра в отчете.
*в открывшемся окне в левом столбце перейти на вкладку «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).


==Создание каскадного параметра==
===Свойства параметров===
Если список значений параметра зависит от значения другого параметра, отчёт собирает необходимое значение параметра и использует его для создания списка значений для второго параметра.
 
Такой каскад значений параметров иногда называют зависимыми, связанными или иерархическими параметрами.
{|class="wikitable" style="background-color: #fff;"
Чтобы создать каскадные параметры на странице или в отчёте RDLX, выполните следующие действия.
|-
*для создания каскадного параметра на первом этапе создается простой параметр, при этом все этапы полностью повторяют пп. 5.2-5.3
! Свойство
**создаем новый набор данных «FilterFio» с таким же или более коротким SQL-запросом;
! Описание
**создаем параметр «ReportParameterFio» (с принимаемым из набора данных значением «fio»);
|-
**при необходимости фильтрации таблицы по данному критерию подключаем созданный параметр к таблице с общим значением параметра «=[fio] In (=Parameters!ReportParameterFio.Value)»;
| '''<code>Name</code>'''
**если значение ФИО нужно только для однократного вывода на экран (например, для подписи документа), то шаг подключения параметра к таблице пропускается;
|Имя параметра может содержать любые символы, кроме точки <code>.</code>.
*в результате создается второй параметр со значениями, не зависящими от первого;
|-
*для добавления зависимости необходимо в дереве отчета выбрать набор данных «FilterFio» правой кнопкой выбрать пункт меню «Edit» (рис. 5.9);
| '''<code>DataType</code>'''
*в отрывшемся окне в левой части выбрать раздел «DataSet - Parameters» и нажать на кнопку «+» (рис. 5.10);
|Тип данных параметра.
*в отрывшемся окне в поле «Name» (рис. 5.11) ввести имя параметра (например, «SelectedLaboratory»);
|-
*в поле «Value» нажать стрелку меню и выбрать пункт «Expression…» (рис. 5.11);
| '''<code>Expression</code>'''
*в левой части окна в области «Fields:» раскрыть группу «Parameters» и выбрать пункт «ReportParameterLaboratory» (рис. 5.12);
|Выражение, которое возвращает значение параметра. Подробнее о выражениях смотрите в главе <code>Выражения</code>.  
*двойным кликом или кнопкой «Append» добавить пункт «ReportParameterLaboratory» в область «Expression:» (рис. 5.12);
Это выражение будет вычислено при обращении к параметру.
*нажать кнопку «OK»;
|-
*в оставшемся открытым окне свойств набора данных в левой части окна выбрать раздел «DataSet - Query» (рис. 5.13);
| '''<code>Value</code>'''
*в поле «Query:» в конце запроса добавить условие «WHERE fio In (@SelectedLaboratory)» (рис. 5.13);
|Значение параметра. Это свойство недоступно в дизайнере и может быть заполнено программным способом.
*таким образом, итоговые записи данного запроса будут браться не напрямую из набора данных БД, а после предварительной фильтрации на основе лаборатории, выбранной в первом параметре;
|-
*в результате (рис. 5.14) связанный параметр функции не активен, пока не будет определено значение основного параметра лаборатории.
|}
 
Вы должны настроить свойства <code>Name</code> и <code>DataType</code>.  
 
Свойство <code>Expression</code> можно оставить пустым. В этом случае значение параметра надо передавать программным способом.
 
==Создание параметра==
 
Чтобы создать параметр, выберите элемент <code>Параметры отчета</code> в окне <code>Данные</code> и выберите пункт <code>Новый параметр</code> в контекстном меню:
 
[[Файл: create_parameter_1.png | center | border]]
 
Нажмите клавишу <code>F2</code> и задайте желаемое имя параметра, затем переключитесь в окно <code>Свойства</code> и укажите тип данных параметра (свойство <code>DataType</code>).
 
Параметры могут быть вложенными. Чтобы создать вложенный параметр, выберите родительский параметр и выберите пункт <code>Новый параметр</code> в контекстном меню:
 
[[Файл: create_parameter_2.png | center | border]]
 
При этом можно обращаться как к родительскому параметру, так и к вложенному.  
 
Количество уровней вложенности не ограничено.
 
==Использование параметров в отчете==
 
===Простой параметр===
К параметру можно обращаться из выражения, используя квадратные скобки:
 
<syntaxhighlight lang="js">
[Имя параметра]
</syntaxhighlight>
 
===Вложенный параметр===
К вложенному параметру надо обращаться следующим образом:
 
<syntaxhighlight lang="js">
[Родительский параметр.Дочерний параметр]
</syntaxhighlight>
 
===Строковый параметр===
Так как параметр имеет определенный тип (он задан в свойстве <code>DataType</code>), с параметром можно выполнять действия, разрешенные для типа данных.  
 
Так, параметры строкового типа можно использовать в выражении следующим образом:
 
<syntaxhighlight lang="js">
[Строковый параметр].Substring(0, 2)
</syntaxhighlight>
 
===Пример===
#Существует отчет, печатающий таблицу <code>Employees</code> (Сотрудники).  
#Требуется распечатать информацию о сотруднике с указанным номером (поле <code>EmployeeID</code>).  
#Для этого нужно создать параметр с именем <code>Номер сотрудника</code>.
#Укажем тип параметра – <code>Int32</code>, так как именно этот тип имеет поле <code>EmployeeID</code>.
 
::*Чтобы отфильтровать сотрудника с указанным номером, нужно зайти в редактор бэнда <code>Данные</code> и на закладке <code>Фильтр</code> указать следующее выражение:
 
:::<syntaxhighlight lang="js">
[Employees.EmployeeID] == [Номер сотрудника]
</syntaxhighlight>
 
::*Чтобы передать значение параметра из программы в отчет, нужно использовать следующий код:
 
:::<syntaxhighlight lang="js">
Report.SetParameterValue("Номер сотрудника", 2);
</syntaxhighlight>

Текущая версия от 07:57, 19 октября 2026

Параметр – это переменная, значение которой может быть определено как в самом отчете, так и вне его (программа, вызывающая отчет, может передавать в него значения параметров).

Параметр может использоваться в выражениях, выводиться в объектах типа Текст.

Наиболее частые способы использования параметров

  • фильтрация данных по условию, заданному в параметре;
  • печать значения параметра в отчете.

Свойства параметров

Свойство Описание
Name Имя параметра может содержать любые символы, кроме точки ..
DataType Тип данных параметра.
Expression Выражение, которое возвращает значение параметра. Подробнее о выражениях смотрите в главе Выражения.

Это выражение будет вычислено при обращении к параметру.

Value Значение параметра. Это свойство недоступно в дизайнере и может быть заполнено программным способом.

Вы должны настроить свойства Name и DataType.

Свойство Expression можно оставить пустым. В этом случае значение параметра надо передавать программным способом.

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

Чтобы создать параметр, выберите элемент Параметры отчета в окне Данные и выберите пункт Новый параметр в контекстном меню:

Нажмите клавишу F2 и задайте желаемое имя параметра, затем переключитесь в окно Свойства и укажите тип данных параметра (свойство DataType).

Параметры могут быть вложенными. Чтобы создать вложенный параметр, выберите родительский параметр и выберите пункт Новый параметр в контекстном меню:

При этом можно обращаться как к родительскому параметру, так и к вложенному.

Количество уровней вложенности не ограничено.

Использование параметров в отчете

Простой параметр

К параметру можно обращаться из выражения, используя квадратные скобки:

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

Вложенный параметр

К вложенному параметру надо обращаться следующим образом:

[Родительский параметр.Дочерний параметр]

Строковый параметр

Так как параметр имеет определенный тип (он задан в свойстве DataType), с параметром можно выполнять действия, разрешенные для типа данных.

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

[Строковый параметр].Substring(0, 2)

Пример

  1. Существует отчет, печатающий таблицу Employees (Сотрудники).
  2. Требуется распечатать информацию о сотруднике с указанным номером (поле EmployeeID).
  3. Для этого нужно создать параметр с именем Номер сотрудника.
  4. Укажем тип параметра – Int32, так как именно этот тип имеет поле EmployeeID.
  • Чтобы отфильтровать сотрудника с указанным номером, нужно зайти в редактор бэнда Данные и на закладке Фильтр указать следующее выражение:
[Employees.EmployeeID] == [Номер сотрудника]
  • Чтобы передать значение параметра из программы в отчет, нужно использовать следующий код:
Report.SetParameterValue("Номер сотрудника", 2);