Oracle apex 如何使用APEX_APPLICATION.G_F01访问APEX_ITEM.TEXTAREA字段

Oracle apex 如何使用APEX_APPLICATION.G_F01访问APEX_ITEM.TEXTAREA字段,oracle-apex,Oracle Apex,我使用以下查询得到以下表格报告: select id, name, telephone, apex_item.checkbox2(1,id) as "Tick when Contacted", apex_item.text(20,my_date) as "Date Contacted", apex_item.textarea(30,my_comment,5,80) as "Comment" from my_table 此

我使用以下查询得到以下表格报告:

select id,
       name,
       telephone,
       apex_item.checkbox2(1,id) as "Tick when Contacted",
       apex_item.text(20,my_date) as "Date Contacted",
       apex_item.textarea(30,my_comment,5,80) as "Comment"
from   my_table
此报告显示10条记录,其中驱动键是分配给F01的复选框

我的问题是,由于这是一个表格报告,使用Oracle APEX_APPLICATION.G_F01.COUNT-我如何访问textarea字段的值,其中“My_comment”是用户可在报告上输入的值,而不是来自数据库列/表

据我所见,这似乎是一个顺序问题,如果您输入的记录顺序不正确,则会丢失值


我只勾选了第1行、第3行和第5行的复选框,因此希望返回仅与这些选定行相关的textarea字段的值。

是的,当表格表单包含复选框时,它会变得棘手。在您的示例中,g_f01将仅包含3个值为1、3、5的元素,但数组g_f30将包含10个元素

通常,在使用apex_项构建表格形式时,最好也使用apex集合:

  • 使用my_表中的相关数据填充页面条目上的APEX集合。将mytable行的ID保存在隐藏项中,例如apex_item.hidden(2,ID)
  • 编写报告以从集合而不是我的表格中工作,并在复选框项中使用seq_id而不是id:
    apex_项。复选框2(1,seq_id)
  • 提交时,使用g_fxx数组使用多个过程更新集合oftne
  • 最后使用集合更新我的表格
  • 因此,在您的示例中,您可以首先使用更新APEX集合,通过将c050设置为“Y”来指示勾选了哪些行:

    for i in 1..apex_application.g_f01.count loop
        apex_collection.update_member_attribute('MYCOLL', apex_application.g_f01(i), 
          50, 'Y');
    end loop;
    
    然后使用其他更改对其进行更新:

    for i in 1..apex_application.g_f02.count loop
        apex_collection.update_member_attribute('MYCOLL', apex_application.g_f02(i), 
          20, apex_application.g_f20(i));
        apex_collection.update_member_attribute('MYCOLL', apex_application.g_f02(i), 
          30, apex_application.g_f30(i));
    end loop;
    
    最后,将相关更改应用于my_表:

    for r in (select c002, c020, c030 
              from apex_collection
              where collection_name = 'MYCOLL'
              and c001 = 'Y' -- Checked rows only
             )
    loop
        update my_table
        set my_date = r.c020
        ,   my_comment = r.c030
        where id = r.c002;
    end loop;
    

    就这么简单

    晶莹剔透;)我想在我的回答之后扁桃体有这个问题/困惑。我的第一个答案是错的,所以错了。并不是说我不知道这一点,我一定是判断失误了:我甚至测试了该死的代码,结果显示我错了!我现在修改了。但是,代码的最终结果不是与基于集合的答案相同吗?使用收藏真的会有很多好处吗?这里可能没有这么多好处。这只是我的默认设置:如果我使用apex_项目,那么我通常也使用集合!在这种情况下,你的方法会更简单,我的方法可能有点过头了。感谢你的回答Tony以及你的修改版本Tom。谢谢各位。我觉得只有我们三个人在使用Oracle ApEx。。。。