Параметры
AKReport

содержание

В разделе " Параметры" размещаются параметры, значения которых вводит пользователь перед созданием отчета.

 

Для каждого параметра задается "Имя", "Заголовок", определяется тип, и заполняются свойства, соответствующие выбранному типу. Параметр может быть одного из следующих типов: "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 запроса. Передача 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" возвращает индекс выбранной записи (строки).

 

содержание

Copyright © 2004: Alexander Krepky, Eugeny Makalish