在oracle表单6i中将值从一种形式传递到另一种形式

时间:2013-01-16 08:03:48

标签: sql oracle oracleforms

我是Oracle表单的新手,我正在设计编写应用程序。我在以下情况中遇到问题。

我有一个表单(FORM1)来显示没有授权细节的项目列表。在授权项目之前,授权人必须查看详细信息。这需要另一个表单(FORM2),只要选择了一个项目并且选择了“VIEW”按钮,就会调用该表单。细节将显示在那里。在FORM2上也将是按钮:REJECT,APPROVE和BACK。

这是VIEW按钮的FORM1按钮按下事件:

DECLARE
list_id   ParamList;
USR_MSG NUMBER;
BEGIN  


IF :TBL_CONTRACT.CONTRACT_NO IS NULL THEN
    USR_MSG:=USER_ALERT('INFO_ALERT','Please select a valid contract no to View.');
    RAISE FORM_TRIGGER_FAILURE;
END IF;


list_id := Create_Parameter_List('PAR_CONTRACT');
Add_Parameter(list_id, 'CONTRACT_NO',TEXT_PARAMETER,:TBL_CONTRACT.CONTRACT_NO);
call_Form('T:\FRM_APPROVAL_VIEW.fmx',no_hide,no_replace, no_query_only,list_id);

END; 

我的目的是将contract_id传递给FORM2并查询数据库以获取详细信息,然后将其显示在表单上。

以下是-new-form-instance事件时Form2的代码。

SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WINDOW_STATE,MAXIMIZE);
BEGIN
  IF ( :PARAMETER.PAR_CONTRACT IS NOT NULL ) THEN 
    /* Use this value in the WHERE clause of MY_BLOCK */
    Set_Block_Property('TBL_CONTRACT',DEFAULT_WHERE, 'PAR_CONTRACT = :PARAMETER.PAR_CONTRACT');
    GO_BLOCK('TBL_CONTRACT');

    Execute_Query;
  END IF;
END; 

当我运行应用程序时,我遇到错误:FRM 47023,FRM_APPROVAL_VIEW形式中没有名为Contract_No的参数。

有人会解释什么是错误的和补救措施。

提前致谢。

1 个答案:

答案 0 :(得分:0)

子表单中表单参数的名称应该是参数的名称(CONTRACT_NO),而不是参数列表的名称!如果您重命名forms参数并更改要使用的代码:PARAMETER.CONTRACT_NO那么这应该适合您。