1

私のフォームには、マスター ブロック ( ORDER) と詳細ブロック ( ORDER_LINE) があります。ORDERブロックには、次のように定義された項目ORDER_ID(主キー) があります。

ORDER_ID アイテムのプロパティ パレットのスクリーン ショット

ORDER_LINEブロックはORDER.ORDER_IDアイテムを引数として使用して、そのレコードを照会します。

ORDER_LINE ブロックのプロパティ パレットのスクリーン ショット

ORDER_ID 引数のプロパティ パレットのスクリーン ショット

プロシージャは次のORDERING_PACKAGE.QUERY_ORDER_LINESように宣言されます。

PROCEDURE
  query_order_lines
  (
    order_lines   IN OUT ORDER_LINE_CURSOR_TYPE,
    order_id      NUMBER,
    line_number   VARCHAR2,
    bin           VARCHAR2,
    plu           VARCHAR2,
    description   VARCHAR2
  );

CtrlOracle フォーム ( + )をコンパイルしようとするとT、次のようなエラーが表示されます。

FRM-30408: 値が無効です。
参照: ORDER.ORDER_ID
ブロック: ORDER_LINE
手順: ORDERING_PACKAGE.QUERY_ORDER_LINES
フォーム: ORDER_FORM
FRM-30085: 出力のフォームを調整できません。

ドキュメントによると、推奨される解決策は次のとおりです。

原因: 指定されたデータ型に入力された値が無効です。

処置: 次の1つ以上を修正してください。

  1. 指定されたプロシージャのプロシージャ引数リスト内の指定された値に対応する引数のデータ型。
  2. 指定されたプロシージャーのプロシージャー引数リスト内の引数の値。

これらの推奨事項はどちらも機能しません。

  1. 形式の引数のデータ型 ( NUMBER) は、プロシージャのパラメーターのデータ型 ( ) と同じですNUMBER
  2. 引数の値 ( ORDER.ORDER_ID) もタイプですNUMBER(最初のスクリーン ショットを参照) 。

このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

2

そうそう、Oracle Forms の非常に役立つヘルプ ファイルです。「パラメータが間違っています。変更してください。ろば」

エラーはもう少し微妙なので、この場合はあまり役に立ちません。

この場合、引数に指定する値はORDER.ORDER_ID参照できません。:バインド変数として識別するために、前に good ole を追加する必要があります。" :ORDER.ORDER_ID" は、引数の [値] フィールドでどのように読み取られるべきかです。

基本的に、値列は、フォームがPL/SQLブロック(フォーム内)で参照できる実際の値である必要があります。

お役に立てれば!

于 2011-01-21T14:11:53.017 に答える