0

我有以下选择语句用作标准报告:

select id,
       name,
       telephone,
       apex_item.checkbox2(10,id) as "Tick when Contacted",
       apex_item.text(20,:P2_DATE) as "Date Contacted",
       apex_item.textarea(30,:P2_COMMENT,5,80) as "Comment"
from   my_table

我的问题是,我不确定我是否正确执行此操作的区域是,如果此语句返回 10 行并且在这 10 行中,我只选择/检查 5 条记录,然后按提交按钮,为什么会这样将所选记录插入另一个表的我的 PL/SQL 页面进程没有拾取:P2_DATE:P2_COMMENT哪些是页面上的隐藏项,纯粹用作占位符,而不是 my_table 中的实际列?

我这样做是正确的还是需要使用 apex 集合?

这是我的页面流程的样子;它是否正确?

DECLARE

  v_row          BINARY_INTEGER;

BEGIN
  FOR i IN 1..APEX_APPLICATION.G_F10.COUNT LOOP
    v_row := APEX_APPLICATION.G_F10(i);

    INSERT INTO MY_OTHER_TABLE
                   ( DATE_CONTACTED,
                     COMMENTS 
                   )
    VALUES         ( APEX_APPLICATION.G_F20(v_row),
                     APEX_APPLICATION.G_F30(v_row) 
                   );
  END LOOP;

  COMMIT;
END;

带有用户输入的报告示例如下:

ID/CHECKBOX         DATE CONTACTED          COMMENTS
=====================================================
1                   21/08/2012              Comment 1
2                   21/08/2012              Comment 2
3                   21/08/2012              Comment 3
4                   21/08/2012              Comment 4
5                   21/08/2012              Comment 5

根据用户手动输入这 5 条评论的报告,我希望这 5 条记录被插入到 MY_OTHER_TABLE 中,因为它们已经过检查。

不幸的是,我检查过的 5 条记录从未填充 MY_OTHER_TABLE。

我不确定我错过了什么,或者在使用这两个占位符项目时我的原始选择是否完全错误?

4

1 回答 1

2

在你的评论中你说

我可以在源不是来自底层 oracle 表的情况下使用 apex_item.text api 吗?

现在我读为:

我可以生成此报告并将我的 apex_item 字段的默认值设置为我的 2 个页面项目的默认值吗?

是的。你可以。这就是我认为您最初的意思,这是有道理的,因为无论如何这些项目都是隐藏的。只需确保以下内容:
如果您的意思是在页面加载时未将值放入报告项目中:
如果隐藏项目的区域低于您的报告区域,请使用项目移动您的区域或创建一个新区域在您的报告所在区域上方。
上面和下面我正在谈论他们在表单结构中的位置。如果您使用组件视图轻松查看此内容,请切换到树视图。
我的猜测是该项目(及其源)之前已处理,因此在报告开始呈现之前具有有效的会话状态。

于 2012-08-21T14:15:57.260 回答