从一种形式中获取价值并将其传递给另一种形式

Take value from one form and pass it to another one

我开始学习 PLSQL Oracle,我试图找到一种方法将值从一种形式复制到另一种形式。 我有两种形式,首先 form (A) 进行一些计算,在某些情况下无法在形式 (A) 中编辑此计算。 我想到制作 form (B) 并从 form (A) 编辑它们传递这些数据,然后将其传递回 form (A) 这是我的代码和我的想法的图片。

begin
    set_block_property('POL',UPDATE_ALLOWED,PROPERTY_TRUE);

        update POL set  
        POLICA =: TENDER.POLICA,
        VOZAC = TENDER.VOZAC,
        BR_VOZACA = TENDER.BR_VOZACA,
    NEZGODA1 = TENDER.NEZGODA1,
        PUTNICI = TENDER.PUTNICI,
        BR_PUTNIKA = TENDER.BR_PUTNIKA,
        NEZGODA = TENDER.NEZGODA,
        AO_PLUS_LIMIT = TENDER.AO_PLUS_LIMIT,
        AO_PLUS_PREMIJA = TENDER.AOPLUSPREMIJA,
        PRAVNA_ZASTITA_LIMIT = TENDER.PRAVNA_ZASTITA_LIMIT,
        PRAVNA_ZASTITA_PREMIJA = TENDER.PRAVNA_ZASTITA_PREMIJA,
        LOM_STAKLA_PREMIJA = TENDER.LOM_STAKLA_PREMIJA,
        TROSKOVI_LIJECENJA = TENDER.TROSKOVI_LIJECENJA,
        TROSKOVI_LIJECENJA_PREMIJA = TENDER.TROSKOVI_LIJECENJA_PREMIJA

        WHERE POLICA =:TENDER.BRPOLICE;

end;

我尝试选项:从项目属性复制值,但出现错误

FRM-30047: Cannot resolve item reference 

不知道我哪里弄错了?有什么建议或意见吗??

表单通常通过以下两种方式进行通信:

  • 参数
  • 全局变量

全局变量使用起来更简单;在表格 A 中,您只需将其设置为 :global.polica := :pol.polica; 并在表格 B 中将其用作(例如)

select ...
from some_table
where polica = :global.polica;

全局变量总是字符串(它们的数据类型是VARCHAR2),其大小是有限制的(这可能取决于表单版本;我知道某些版本限制为 255 个字符)。

参数 使用起来稍微复杂一些,因为您必须首先创建它(在对象导航器的 "Parameters" 节点中),但它允许您选择一个数据类型(因此您不仅限于 strings)。您可以像全局变量一样设置它的值::parameter.polica := :pol.polica; 但实际上您必须 传递 它以在 CALL_FORM(或 OPEN_FORM)参数中形成 B列表。例如:

创建参数列表的函数(后面的例子中会用到):

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 在线帮助系统中有更多信息。