| В разделе "
Параметры" размещаются
параметры, значения которых вводит пользователь перед созданием отчета.
Для каждого параметра задается "Имя",
"Заголовок", определяется тип,
и заполняются свойства, соответствующие выбранному типу. Параметр может
быть одного из следующих типов: "Edit",
"Combobox", "Date",
"Lookup", "StaticText",
"Grid", "List",
"CheckBox", "File".
Доступ к значению параметра из скрипта или SQL запроса осуществляется
по имени ("Имя"). Заголовок ("Заголовок")
отображается в окне при запросе параметра рядом с полем ввода значения.
Свойства параметров:
"Имя" - имя параметра. Доступ
к значению параметра из скрипта или SQL запроса осуществляется по имени.
"Заголовок" - текст, отображаемый
в окне при запросе параметра (run-time) рядом с полем ввода значения.
"
Обязательное" - параметр обязательный для ввода. Нельзя сформировать
отчет, оставив этот параметр пустым;
"
Авторазмер" - правый край контрола параметра при изменении
размеров окна будет привязан к правому краю окна ввода параметров;
"
Сохранять значение" - сохранять значение параметра в ini-файле
и автоматически восстанавливать при последующем открытии окна ввода параметров;
"
Показывать Check" - рядом с контролом параметра возникает
значок , позволяющий
включать/выключать параметр;
" Сохранять
Check" - сохранять состояние значка
(см. "Показывать Check") в ini-файле
и автоматически восстанавливать при последующем открытии окна ввода параметров;
"
Показывать параметр" - отображать параметр в окне ввода параметров;
"Тип" - свойство, определяющее
тип параметра. Свойство "Тип" может иметь одно из следующих
значений:
| Тип |
Описание параметра и дополнительных
свойств, зависящих от типа параметра |
| "Edit" |
Параметр представляет собой строку ввода текстового значения.
Дополнительные свойства:
Нет.
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - Возвращает введенную
строку.
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
Пример.
Скрипт проверки параметра:
Var
S : String;
...
if (Params.Item('Param_checked').Value)
then S := Params.Item('Param').Value
else S := '';
... |
В параметре "Param" должно
быть выбрано "
Показывать Check".
При вводе параметра если пользователь отметил этот параметр, то
S будет присвоено значение параметра "Param",
если не отметил, то, не зависимо от значения параметра, "S"
будет присвоено значение "пусто"
|
| "Combobox" |
Параметр представляет собой combobox - строка ввода с возможностью
выбора значения из выпадающего списка значений.
Дополнительные свойства:
"Items" - список значений
для выбора из выпадающего списка;
"KeyItems" - список ключей,
соответствующих значениям "Items".
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - значение, выбранное
из списка "Items";
имяпараметра_KEY - значение ключа
из списка "KeyItems", соответствующее
выбранному значению из списка "Items";
имяпараметра_INDEX - порядковый
номер выбранного значения (начиная с 0).
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
Если не заполнен список "KeyItems"
то, кроме выбора значения из списка, пользователь может ввести свое
значение.
Кол-во значений в списке "Items"
должно соответствовать кол-ву записей в "KeyItems".
|
| "Date" |
Параметр представляет собой строку ввода даты. Дополнительных
свойств не имеет. При вводе значения можно выбрать дату из выпадающего
календаря.
Дополнительные свойства:
Нет.
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - Возвращает введенную
дату.
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
|
| "Lookup" |
Внешне параметр аналогичен "Combobox",
только выпадающий список значений заполняется SQL запросом (Lookup
SQL запрос).
Дополнительные свойства:
"SQL" - текст Lookup
SQL запроса, формирующий выпадающий список.
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - значение, выбранное
из выпадающего списка (второе поле Lookup
SQL запроса);
имяпараметра_KEY - значение ключа
(первое поле Lookup SQL запроса), соответствующее
выбранному значению из выпадающего списка;
имяпараметра_имяполя - значение
из соответствующего поля Lookup SQL запроса.
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
Пример "Demo2"
Lookup SQL запрос, параметр "Department".
| select DEPARTMENTID, DEPARTMENT,
DEPARTMENTTYPE
from DEPARTMENTS
order by DEPARTMENT |
Первое поле, возвращаемое Lookup SQL запросом,
содержит индекс значений, второе поле - отображается в выпадающем
списке. Третье, четвертое и т.д. поля - информационные, их значения
доступны из скрипта и SQL.
Пример обращения к параметру из SQL запроса.
| select DEPARTMENTID, DEPARTMENT,
DEPARTMENTTYPE
from DEPARTMENTS
where DEPARTMENTID = ?Department_KEY |
Получить тип выбранного отдела из SQL запроса.
... = ?Department_DEPARTMENTTYPE |
Получить тип выбранного отдела из скрипта.
... = Params.Item('Department_DEPARTMENTTYPE').Value
|
|
| "StaticText" |
Параметр отображается в виде статического текста.
Дополнительные свойства:
"Текст" - отображаемый
текст.
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - отображаемый текст.
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
|
| "Grid" |
Параметр представляет собой список, формируемый SQL запросом
(grid SQL запрос) и служит для множественного
выбора. Каждая строка имеет
(сheck).
Дополнительные свойства:
"SQL" - текст grid
SQL запроса, формирующий список.
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - возвращает через
запятую список значений из третьего поля grid
SQL запроса, которые были отмечены (сheck);
имяпараметра_KEYS - возвращает
через запятую список значений из первого поля grid
SQL запроса, которые были отмечены (сheck);
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
Пример grid SQL запроса. Параметр
"Departments".
| select DEPARTMENTID, 0,
DEPARTMENT, DEPARTMENTTYPE
from DEPARTMENTS
order by DEPARTMENT |
Первое поле возвращаемое grid SQL запросом
содержит индекс значений, второе поле - определяет состояние
(сheck) при инициализации списка (0 - выбрано/1 - невыбрано). Третье
поле отображается в списке параметра. Четвертое и т.д. поля - информационные,
их значения доступны из скрипта
и SQL. Четвертое и т.д. поля будут
отображаться в колонках параметра.
Пример.
Использование "Grid" параметра
в SQL запросе отчета.
select W.WORKER
from WORKERS W
where W.DEPARTMENTID in
(@@Departments_KEYS%0@) |
В этом запросе будут выбраны все работники отделов, отмеченных
в параметре "Departments".
Подробнее об условии "where":
@@Departments_KEYS%0@ - список
ключей в запрос подставляется как макрос.
Departments_KEYS - возвращает через
запятую список значений из первого поля grid
SQL запроса, которые были отмечены
(сheck), например, "23,567,8,14,99,65,6,1".
Оператор "In" ищет заданное
среди значениий в скобках, перечисленных через запятую.
Пример "Demo3".
Использование "Grid" параметра
в хранимой процедуре.
Пусть хранимая процедура "SP_GET_WORKERS"
вызывается из группы "dsWorkers".
Хранимая процедура "SP_GET_WORKERS".
CREATE PROCEDURE SP_GET_WORKERS
(
DEPARTMENTS_KEYS VARCHAR(30000) CHARACTER SET WIN1251)
RETURNS (
WORKER
VARCHAR(50) CHARACTER SET WIN1251,
PROFESSION
VARCHAR(50) CHARACTER SET WIN1251)
AS
begin
/* Procedure
Text */
for
select
WORKER, PROFESSION
from
WORKERS W
where
(',' || :DEPARTMENTS_KEYS || ',' containing ',' || cast (W.DEPARTMENTID
as varchar(10)) || ',')
into
:WORKER, :PROFESSION
do Begin
suspend;
end
END |
Подробнее об условии "where":
:Departments_KEYS - Входной параметр,
в котором передается перечисленный через запятую список значений
из первого поля grid SQL запроса, которые
были отмечены
(сheck), например, "23,567,8,14,99,65,6,1".
containing - ищет вхождение подстроки
W.DEPARTMENTID в строку DEPARTMENTS_KEYS.
',' || ... || ',' - следует обрамить
список ключей и искомый ключ, так как если этого не сделать, то,
например, ключ "7" будет
найден среди ключей "23,567,8,14,99,65,6,1",
что не правильно.
Если искать ключ ",1,",
то он найдется только в списке ключей обрамленном запятыми: ",23,567,8,14,99,65,6,1,",
это правильно.
cast ( ... as varchar(10)) - преобразование
к строковому типу. Значение "10"
- максимальная длина индекса в символах, зависит от типа приводимого
поля. При приведении к типу "varchar"
отсекаются лишние пробелы справа от значения. Это необходимо, так
как искомое значение должно иметь строковый тип.
Вызов хранимой процедуры. Группа "dsDepartments".
select WORKER, PROFESSION
from SP_GET_WORKERS(:Departments_KEYS) |
В этом запросе будут вызвана хранимая процедура, которая выберет
всех работников отделов, отмеченных в параметре "Departments".
В процедуру передается перечисленный через запятую список значений
из первого поля grid SQL запроса, которые
были отмечены
(сheck), например, "23,567,8,14,99,65,6,1".
Шаблон документа:
Список работников
отделов.
~Departments~
~Begin dsDepartments~
| ~WORKER~ |
должность: ~PROFESSION~ |
~End dsDepartments~
Подпись.
|
Результат "Demo3".
Окно запроса:
Сформированный документ:
Список работников
отделов.
Банк2, Касса1
| Сохин |
должность: Инкассатор |
| Полонен |
должность: Кассир |
| Пронин |
должность: Грабитель |
| Иванченко |
должность: Охранник |
| Пономарев |
должность: В эпизодах |
| Степаненко |
должность: мл. Кассир |
| Шовальских |
должность: ст. Кассир |
| Нидарчук |
должность: Уборщица |
| Семенов |
должность: Сторож |
| Гусько |
должность: Сторож
|
Подпись
|
|
| "List" |
Параметр представляет собой список, формируемый SQL запросом
(list SQL запрос) и служит для единственного
выбора.
Дополнительные свойства:
"SQL" - текст List
SQL запроса, формирующий выпадающий список.
"Height" - Высота контрола
параметра "List" (в пикселях).
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - значение, выбранное
из выпадающего списка (второе поле List SQL
запроса);
имяпараметра_KEY - значение ключа
(первое поле List SQL запроса), соответствующее
выбранному значению из выпадающего списка;
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
Пример List SQL запроса. Параметр
"Department".
| select DEPARTMENTID, DEPARTMENT
from DEPARTMENTS
order by DEPARTMENT |
Первое поле, возвращаемое List SQL запросом,
содержит индекс значений, второе поле - отображается в списке.
Пример обращения к параметру из SQL запроса.
| select W.WORKER
from WORKERS W
where W.DEPARTMENTID = ?Department_KEY |
Этот запрос вернет список работников отдела выбранного в параметре
"Department".
|
| "CheckBox" |
Параметр представляет собой CheckBox .
Дополнительные свойства:
Нет.
Для доступа к параметру из скрипта
и SQL используется:
имяпараметра - значение параметра
(True/False).
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
|
| "File" |
Параметр представляет собой строку с возможностью открытия проводника
и выбора имени файла.
Дополнительные свойства:
Нет.
Для доступа к параметру из скрипта
используется:
имяпараметра - имя выбранно файла
с полным путем.
имяпараметра_checked - Возвращает
состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Обращение к параметрам из =>
SQL, из =>
скрипта.
Пример "Demo4".
Параметр "FileDocName"
определен типа "File".
По событию "OnAfterQueryParams"
раздела "
Параметры" создан обработчик
события.
procedure OnAfterQueryParams;
begin
Report.DestinationDoc
:= Params.Item('FileDocName').Value;
end;
|
Теперь у пользователя есть возможность выбирать имя файла, в котором
будет создаваться документ.
|
Примечание. Обращение к параметрам
из SQL.
В SQL запрос передавать значения параметров можно двумя способами: как
SQL параметр, как SQL макрос.
Если передаваемое значение число или строка без спецсимволов, то лучше
передавать как SQL параметр.
Формат SQL запроса. Передачи SQL параметра:
Во всех остальных случаях используется SQL макрос.
Формат SQL запроса. Передача SQL макроса:
@@имя_макроса%значение_макроса_по_умолчанию@ - вызов макроса
будет заменен на значение макроса.
@@имя_макроса%#значение_макроса_по_умолчанию@ - вызов макроса будет
заменен на значение макроса в апострофах.
|
Более подробно о параметрах и макросах см. документацию к компонентам
FIBPlus.
Примечание.
Обращение к параметрам из скрипта.
Params.Item('имяпараметра').Value -
возвращает значение параметра.
Общме случаи:
Params.Item('имяпараметра_KEY').Value
- В параметрах:"Combobox", "Lookup",
"List" - возвращает индекс выбранной записи
(строки).
Params.Item('имяпараметра_KEYS').Value
- В параметре "Grid" возвращает через запятую
список индексов выбранных записей (строк).
Params.Item('имяпараметра_CHECKED').Value
- Для всех параметров возвращает состояние check
параметра (см. "Показывать Check"),
если он определен для имяпараметра.
Params.Item('имяпараметра_имяполя').Value
- В параметре "Lookup" возвращает значение
поля имяполя выбранной записи (строки).
Params.Item('имяпараметра_INDEX').Value
- В параметре "Combobox" возвращает
индекс выбранной записи (строки).
|