【问题标题】:Oracle call_form statement not workingOracle call_form 语句不起作用
【发布时间】:2018-08-14 17:28:38
【问题描述】:

我对 Oracle 表单 11g R2 有疑问。我正在从 Oracle forms 10 升级,但我认为问题不是因为升级。

我已经安装了 Oracle Fusion Middleware 和 Oracle forms 11g R2。我已经设置了 webutil。安装是正确的,因为我可以得到一个测试表。

我已经升级了旧的表单版本 10 并将它们重新编译为表单 11g R2。

我正在为我的应用获取登录表单。但是当我登录时,我并没有被重定向到第二种形式。

我添加了一条消息来跟踪问题所在,并且我正在登录。我可以在数据库中看到一个会话。

我在 call_form 语句前后添加了两条消息。

    message('Calling a new form...');
    call_form(select_new_form_proc(6),hide,do_replace);
    message('New form called...');

我在登录表单的最后一行看到第一个弹出窗口和文本“正在调用新表单...”。

单击“确定”后,我没有看到第二个弹出窗口。登录表单的最后一行只有一条消息“New form called...”。

所以语句 call_form(...) 被忽略。

formsweb.cfg 中的大多数设置选项都是默认设置。

任何想法我做错了什么?

谢谢。

【问题讨论】:

  • 该代码在 Forms 10g 中有效吗?因为,一般来说,CALL_FORM 需要表单名称,用单引号括起来。 select_new_form_proc(6) 代表什么?特别是“(6)”?如果它是你想传递给被调用表单的参数值,那是无效的——你应该使用 PARAMLIST 参数。打开 Forms 在线帮助系统并搜索 CALL_FORM;您将看到一个可能会给您一些想法的示例。

标签: oracle call oracleforms


【解决方案1】:

假设select_new_form_proc 是一个从表单ID 6 的查找表中返回表单名称的函数,则您可能缺少表单名称的扩展名,因此,您可能更喜欢使用以下方式:

call_form(select_new_form_proc(6)||'.fmx',hide,do_replace);

除此之外应该没有问题。

【讨论】:

  • 我现在无法测试它,但是 - 我不记得我曾经使用过表单扩展,所以我不会说它有什么不同。但是,嘿,永远不要说永远。
  • @Littlefoot 你是对的朋友,我看不出任何其他类型的问题。
【解决方案2】:

非常感谢 Ozhan。您的回答使我朝着正确的方向前进。我在消息中添加了“select_new_form_proc(6)”,这样我就可以检查您对 fmx 扩展的想法并找出问题。看起来表单的路径在 db 中具有完整路径。在旧的 10g 表单服务器上,我有 E:.....fmx。在新的 11g 表单服务器上,我已将驱动器号更改为 D:。明天我会更改它并检查它。

最好的问候...

【讨论】:

  • 也谢谢你,很高兴听到这些,但你可以通过按我的答案下方的“添加评论”将其写为评论。祝你有美好的一天。
猜你喜欢
  • 2011-11-04
  • 1970-01-01
  • 2019-11-07
  • 2017-01-17
  • 2016-09-11
  • 2015-01-05
  • 1970-01-01
  • 2015-01-16
  • 2021-07-28
相关资源
最近更新 更多