2

私はOracleフォームを初めて使用し、同じアプリケーションを作成するように設計しています。次のシナリオで問題があります。

承認の詳細なしでアイテムのリストを表示するフォーム (FORM1) があります。アイテムが承認される前に、承認者は詳細を確認する必要があります。これは、項目が選択され、「VIEW」ボタンが選択されるたびに呼び出される別のフォーム (FORM2) を呼び出します。そこに詳細が表示されます。FORM2 にもボタンがあります: REJECT、APPROVE、および BACK。

以下は、VIEW ボタンの FORM1 when-button-pressed イベントです。

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 に渡し、フォームに表示される詳細についてデータベースに問い合わせることです。

Form2 when-new-form-instance イベントのコードを次に示します。

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, No such parameter named Contract_No exists in form FRM_APPROVAL_VIEW.

誰かが何が間違っているのか、その解決策を説明してくれますか。

前もって感謝します。

4

1 に答える 1

1

子フォームのフォーム パラメータの名前は、パラメータ リストの名前ではなく、パラメータの名前 (CONTRACT_NO) にする必要があります。フォーム パラメータの名前を変更し、コードを :PARAMETER.CONTRACT_NO を使用するように変更すると、これでうまくいくはずです。

于 2013-01-16T11:21:20.317 に答える