首页 > 解决方案 > 从一种形式获取价值并将其传递给另一种形式

问题描述

我开始学习 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 

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

标签: oracleplsqloracleforms

解决方案


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

  • 范围
  • 全局变量

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

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

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

参数使用起来有些复杂,因为您必须先创建它(在对象导航器的“参数”节点中),但它允许您选择数据类型(因此您不仅限于字符串)。您设置它的值就像全局变量的值一样::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 在线帮助系统中的更多信息。


推荐阅读