2011-01-21 72 views
1

我的表单有一个主模块(ORDER)和一个详细模块(ORDER_LINE)。该ORDER块具有ORDER_ID项(它是主键)定义如下:如何解决Oracle Forms中的“FRM-30408:无效值”错误?

A screen shot of the ORDER_ID item's property palette

ORDER_LINE块使用ORDER.ORDER_ID项目作为参数来查询它的记录:

A screen shot of the ORDER_LINE block's property palette

A screen shot of the ORDER_ID argument's property palette

ORDERING_PACKAGE.QUERY_ORDER_LINES程序是decl ARED如下:

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

当我尝试编译我的Oracle表(按Ctrl + 牛逼),我收到这样的错误:

FRM-30408: Invalid value. 
Reference: ORDER.ORDER_ID 
Block: ORDER_LINE 
Procedure: ORDERING_PACKAGE.QUERY_ORDER_LINES 
Form: ORDER_FORM 
FRM-30085: Unable to adjust form for output.

根据该文件,推荐解决方法是:

原因:为指定的数据类型输入的值无效。

操作:校正一个或多个以下的:

  1. 对应于指定的过程的过程参数列表中的给定值的参数的类型。
  2. 指定过程的过程参数列表中参数的值。

这些都不建议工作:

  1. 形式(NUMBER)参数的数据类型是相同的过程的参数(NUMBER)的数据类型。
  2. 参数(ORDER.ORDER_ID)的值也NUMBER类型(见第一截屏)

如何解决这个问题?

回答

2

啊,是的,Oracle Forms中非常有用的帮助文件。 “你的参数是错误的,改变它,你驴。”

在这种情况下没有太多的帮助,因为错误有点微妙。

在这种情况下,您为参数ORDER.ORDER_ID指定的值将不可引用。您需要预先将其与好的ole :进行比较,以将其识别为绑定变量。 “:ORDER.ORDER_ID”是它应该如何在参数的值字段中读取的。

本质上,值列必须是您的表单可以在PL/SQL块(在表单中)引用的实际值。

希望这会有所帮助!

+0

感叹。我希望文档给出了一些这样的例子。 – 2011-01-21 14:22:26

相关问题