根据"行选择器"插入记录在Oracle APEX中

时间:2018-03-02 08:20:13

标签: oracle-apex-5.1

我在表格上创建了​​一个报表和表单。表单页面是"表格形式",其中所有列都是可编辑的。在" Form"页面,我有一个查找按钮。点击此按钮,它将导航到新页面,其中有一个带有"行选择器"的视图顶部的报告。

当用户可以选择行列表并单击提交时,所选行应插入到表格表单页面。 能否解释一下我是如何实现这一目标的。

1 个答案:

答案 0 :(得分:0)

由于没有人回答你的问题,请根据我目前的知识和我说几句话。经验。请注意,有人可能会有另一个更好的想法和意见。

在表格上创建表格形式,其来源是SELECT语句。假设您要在某个报告页面上检查行选择器复选框,然后这些值将在另一个页面上转换为表格形式 make-a-wish 语句。我会说这些值应该INSERTED到表格中(在其上创建表格形式),然后表格形式应该执行重新查询以获取这些行。

在报告中“检查行选择器复选框”并对这些行执行“某事”:男孩,我不知道该怎么做。是的,我已经用表格形式的自己的复选框项目选择了行(注意区别:不是在报告中,而是以表格形式),这更像是一种痛苦而不是一种快乐。

我建议你阅读以下Patrick Wolf的文章:Which Tabular Form Column is mapped to which Apex_Application.g_fxx array?。为什么?因为它解释了如何处理g_fxx array。以表格形式操纵值是一种手段。只是为了展示我在4.x Apex版本中使用的一个例子(不,我没有更新的代码),这样你就可以了解它应该如何完成;这是一个在提交时触发的页面进程。

  • “01 - ID”代表“apex_application.g_f01”
  • “02 - CB_NEDOSTATAK”代表“apex_application.g_f02”

等等;这些是表格形式的项目

/* 01 - ID
   02 - CB_NEDOSTATAK
   03 - CB_HITNOST
   04 - CB_OTKLONJEN
   05 - NAPOMENA
*/
begin
  for i in 1 .. apex_application.g_f01.count loop

    update dg_pregled set
      cb_nedostatak = case when apex_application.g_f02(i) = 1 or
                                apex_application.g_f03(i) = 1 then 1
                           else 0
                      end,
      cb_hitnost    = decode(apex_application.g_f03(i), 1, 1, 0),
      cb_otklonjen  = case when apex_application.g_f02(i) = 1 and
                                apex_application.g_f04(i) = 1 then 1
                           else 0
                      end,
      napomena      = apex_application.g_f05(i)
    where id = apex_application.g_f01(i);

  end loop;   
end;

基本上,你会做那样的事情;而不是UPDATE,您需要INSERT

正如我所说:这不一定是你问题的最佳解决方案,但这就是我能说的。祝你好运!