2011-11-29 52 views
2

我真正需要的是一个表格形式,它允许我一次更新多行,同时可以像交互式报表一样进行过滤。这有甚么可能性?APEX - 具有MRU功能的表格形式是否具有交互式报告之类的过滤功能?

我也想劫持表格形式的行复选框,当'删除'功能被激活时出现,并使用它们来选择哪些行根据共同的属性分配给一个组。 (即我的表格包含我的清单中的零件,并且我需要能够将具有共同属性的零件分配给一个组进行处理)

也许一个group-by函数在'Group'表中创建一个新行组作为PK和分配给该组的部分作为列表或其他...?

想法?我有点不知所措...

+0

我会使用交互式报表功能的过滤来确定哪些部分具有公共属性,然后用户只需选中要添加到特定组的行的复选框。 – Spags

回答

3

这真的不那么难:)你可以很容易地将IR转换为伪表格形式。尽管总是有更多时尚和优雅的解决方案,但这些解决方案通常涉及大量的JavaScript和/或插件。他们很好,但并不总是你想要或当然需要。

那么如何操纵你的输出呢?使用APEX_ITEM api

快速示例。我有一个建立在emp上的ir。我添加了一个复选框和文本框。 example ir

select empno, ename, deptno, 
     apex_item.checkbox(1, empno) empno_selected, 
     apex_item.text(2, ename, 10, 10) ename_edit 
from emp 

不要忘记:在列属性,设置Display text asStandard Report Column。如果不这样做,输出将以纯文本格式显示。由于apex_item生成HTML代码,你不想当然的纯文本:) ir column attributes

现在,要能够根据你在这些领域产生的,您将需要一个过程要执行的操作DML。我首先指出生成的项目存储在应用程序变量namely in arrays in APEX_APPLICATION中。 记下复选框的行为:只有勾号框会将其值存储在数组中!

举个例子,我做了这个小On Submit process(也加入窗体上按钮SUBMIT实际执行提交...)

for i in 1..apex_application.g_f01.count 
loop 
insert into empselected(empno, selectiondate, ename_changed) 
values(apex_application.g_f01(i), sysdate, apex_application.g_f02(i)); 
end loop; 

这将遍历与勾选复选框记录,并将它们插入某个表格中。例如,我用KING勾选了框并编辑了文本框。见记录NR 2(1是从上一个操作;)) edit example ir output of edit

这不是一路有尚未虽然。您仍然错过了表格形式的功能,它是流程,以及诸如乐观锁定之类的东西。如果你想保留表格形式,你也可以,例如,check out this link。在这里也有一些关于编写你自己的mru进程等的问题,like this one ;)

3

这是possisble,使用相同的表格形式。

  1. 在表格形式的区域中创建一个项目(文本项目)。
  2. 创建一个提交按钮(创建这个区域的项目中显示的按钮)
  3. 修改表格形式区源

例如,你需要按客户名称搜索的where子句:

WHERE lower(CUSTOMER_NAME) LIKE '%'||lower(nvl(:PXX_SEARCH,CUSOTOMER_NAME))||'%'

如果您需要寻找其他领域只会增加其他条件,在where子句

WHERE (
    lower(CUSTOMER_NAME) LIKE '%'||lower(nvl(:PXX_SEARCH,CUSOTOMER_NAME))||'%' 
    or lower(CUSTOMER_address) LIKE '%'||lower(nvl(:PXX_SEARCH,CUSOTOMER_NAME))||'%' 
) 

简单并使用相同的表格形式。