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

问题描述 投票:0回答:1

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

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

oracle-apex-5.1
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.