Oracle APEX_ITEM API用法和问题

时间:2012-08-21 13:49:10

标签: sql plsql oracle-apex

我有以下select语句,我将其用作标准报告:

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中,因为它们已经过检查。

不幸的是MY_OTHER_TABLE永远不会填充我已检查过的5条记录。

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

1 个答案:

答案 0 :(得分:1)

在评论中你说

  

我可以使用apex_item.text api,其中源不是来自底层的oracle表吗?

现在我读到:

  

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

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