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

Posted

技术标签:

【中文标题】从一种形式获取价值并将其传递给另一种形式【英文标题】:Take value from one form and pass it to another one 【发布时间】:2019-07-11 07:33:05 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

参数 全局变量

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

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

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

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

【讨论】:

谢谢你的简单解释:) 恭喜成为oracleforms 徽章的第一个持有者。 谢谢你,@Barbaros(虽然它还没有被授予:))

以上是关于从一种形式获取价值并将其传递给另一种形式的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一种形式传递到另一种形式的问题

如何在 Qt 中将数据从一种形式传递到另一种形式?

将数据从一种形式传递到另一种形式(datagridview)

MSoft Access - 将变量从一种形式传递到另一种形式

QT信号和槽将变量传递给另一种形式

我如何从一种形式访问变量到另一种形式