【发布时间】:2017-05-25 14:35:34
【问题描述】:
我有一个交互式报表,其中组合了查询,所以我不能使用可编辑的交互式网格。这就是为什么我必须在查询中使用手动表单。 我找到了一些关于 APEX_ITEM 的不错的提示,但我的流程有问题。
在我的查询中有如下列:
APEX_ITEM.HIDDEN(1,coursestudent.id)
...
APEX_ITEM.SELECT_LIST(2,coursestudent.signed,'Signed;1,Failed;0')
我有一个提交按钮,这是我的流程:
FOR i in 1..apex_application.g_f01.count LOOP
UPDATE coursestudent
SET signed=apex_application.g_f02(i)
WHERE id=apex_application.g_f01(i);
END LOOP;
我认为这并不太难,但在我按下提交后,除了成功消息被写出页面外,没有任何反应。
我该怎么办?
我使用的是 Oracle Apex 版本:5.1.1.00.08
【问题讨论】:
-
在代码中添加一些调试,例如
apex_debug.message('g_f01='||apex_application.g_f01(i)||' g_f02='||apex_application.g_f02(i));在循环中,并检查调试日志以查看提交过程获得的值。请注意,如果 where 子句没有找到匹配的行(或者如果g_f01(i)恰好为空),您的 UPDATE 语句将不会执行任何操作(并且不会引发任何异常)。 -
是的,问题是 apex_application.g_f01(i) 变量为 NULL,但是我应该如何引用表的元素?
-
这就是您引用已发布项目的方式。如果它们为空,则意味着这些项目可能正在使用空值进行初始化。查看为页面生成的 HTML 并检查正在生成的值,例如对于隐藏的项目。
-
感谢您的建议!所以,我发现了错误:这是一个错误。我不得不再次复制粘贴 sql 查询,现在它可以工作了。在此之前我遇到过这个错误,有时新列只是没有显示在页面中。由于我在第一次创建查询后放置了隐藏列,因此它没有显示在页面中,因此该过程中的循环从未起作用。
标签: oracle oracle-apex tabular-form oracle-apex-5.1