Формы обычно взаимодействуют двумя следующими способами:
- параметр
- глобальная переменная
Глобальная переменная проще в использовании;в форме A вы просто устанавливаете его на :global.polica := :pol.polica;
и используете его в форме B как (например)
select ...
from some_table
where polica = :global.polica;
Глобальные переменные всегда строки (ихтип данных VARCHAR2
), размер которого ограничен (это может зависеть от версии Forms; я знаю, что в некоторых версиях он ограничен 255 символами).
Параметр несколько сложнее в использовании, так как вы должны сначала создать его (в узле «Параметры» Навигатора объектов), но он позволяет вам выбрать тип данных (так что вы нене ограничивается строк только).Вы устанавливаете его значение так же, как значение глобальной переменной: :parameter.polica := :pol.polica;
, но вам нужно передать его, чтобы сформировать B в CALL_FORM
(или OPEN_FORM
) списке параметров.Например:
Функция, которая создает список параметров (будет использоваться позже в примере):
function make_param_list (p_name in varchar2)
return paramlist
is
pl_id paramlist;
w_button number;
begin
pl_id := get_parameter_list(p_name);
if not id_null(pl_id) then
destroy_parameter_list(pl_id);
end if;
pl_id := create_parameter_list(p_name);
if id_null(pl_id) then
message('DESIGN ERROR - PARAMLIST');
if name_in('system.mode') <> 'QUERY' then
raise form_trigger_failure;
end if;
else
return pl_id;
end if;
end;
Пример;list_id
относится к параметрам, о которых мы говорим:
declare
list_id ParamList;
begin
list_id := make_param_list('input_params');
Add_Parameter(list_id, 'ugo_id' , TEXT_PARAMETER, :ugo.ugo_id);
Add_Parameter(list_id, 'query_only_mode', TEXT_PARAMETER, :parameter.query_only_mode);
call_form('ugoa', no_hide, no_replace, no_query_only, no_share_library_data, list_id);
end;
Более подробная информация в справочной системе Forms Online.