如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?

Posted

技术标签:

【中文标题】如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?【英文标题】:How do I resolve an "FRM-30408: Invalid value" error in Oracle Forms? 【发布时间】:2011-01-21 14:06:46 【问题描述】:

我的表单有一个主块 (ORDER) 和一个详细块 (ORDER_LINE)。 ORDER 块有一个 ORDER_ID 项(它是主键),定义如下:

ORDER_LINE 块使用 ORDER.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
  );

当我尝试编译我的 Oracle 表单 (Ctrl + T) 时,我收到如下错误:

FRM-30408:值无效。
参考:ORDER.ORDER_ID
块:ORDER_LINE
程序:ORDERING_PACKAGE.QUERY_ORDER_LINES
表格:ORDER_FORM
FRM-30085:无法调整输出形式。

根据文档,推荐的解决方案是:

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

操作:更正以下一项或多项:

    与指定过程的过程参数列表中的给定值对应的参数的数据类型。 指定过程的过程参数列表中的参数值。

这些建议都不起作用:

    表单参数的数据类型 (NUMBER) 与过程参数的数据类型 (NUMBER) 相同。 参数 (ORDER.ORDER_ID) 的值也是 NUMBER 类型(参见第一个屏幕截图)

如何解决此错误?

【问题讨论】:

【参考方案1】:

是的,Oracle Forms 中非常有用的帮助文件。 “你的参数错了,改一下,你个驴。”

在这种情况下帮助不大,因为错误有点微妙。

在这种情况下,您为参数 ORDER.ORDER_ID 指定的值将不可引用。您需要在它前面加上好 ole:,以将其标识为绑定变量。 “:ORDER.ORDER_ID”是它在参数的值字段中的读取方式。

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

希望这会有所帮助!

【讨论】:

叹息。我希望文档给出了一些这样的例子。

以上是关于如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle EBS 问题集锦 - FRM41045 找不到项:无效ID

Oracle EBS 问题集锦 - FRM41045 找不到项:无效ID

FRM-92101的处理

如何从 Oracle Forms 中的触发器修改按钮的状态

表单和表单域

oracle,FORM,删除数据时,只能按插入的顺序删除,才不会报错。(FRM 40654 记录已被其他使用者更新 )