在 Oracle APEX 中基于“行选择器”插入记录

Posted

技术标签:

【中文标题】在 Oracle APEX 中基于“行选择器”插入记录【英文标题】:Insert records based on "Row Selector" in Oracle APEX 【发布时间】:2018-03-02 08:20:12 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

由于没有人回答您的问题(尚未),让我根据我目前的知识和经验说几句话。请注意,有人可能有其他更好的想法和意见。

在表格上创建表格形式,其来源是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

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

【讨论】:

以上是关于在 Oracle APEX 中基于“行选择器”插入记录的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Apex - 更改图表标签

在 Oracle Apex 中显示或插入 SQL 结果

在 Oracle Apex 中将图像插入到表中

根据 Oracle APEX 项目值更新和插入

Oracle Apex - 循环项目

从 Oracle Apex 页面获取多个值并将其存储在表中