在数据库列中保存复选框数据

时间:2015-04-14 05:04:59

标签: oracle11g oracle-apex oracleapplications

我在Oracle APEX中使用P1_checkbox创建了一个项目LOV(select ename, empno from emp WHERE ename LIKE 's%';),它提供了多个复选框。
当我勾选这些复选框时,我想将INSERT复选框数据放入另一个表格"emp_selected"

然后,当我再次登录应用程序时,应用程序现在应该根据插入到表"emp_selected"中的数据以及表"emp"中未选中的框以及何时勾选(选中)复选框我取消选中一些预先选中的复选框并选中新复选框,应在"emp_selected"中相应更新。

我的Oracle APEX版本是4.2。

2 个答案:

答案 0 :(得分:2)

带有多个复选框的顶点复选框将保存其状态,因为所有选定值都用冒号连接在一起,例如One:Two:Three
因此,您必须分离这些值,循环它们并保存它们 您需要正确配置您的复选框来源 See the sample page I set up(apex_demo / demo)

我的所有设置都在该页面上。为了示例,我使用apex集合来模拟存储值的表。原理完全相同 - 您只需要根据自己的选择适应您的桌面。

Checkboxes LOV SQL:

select ename, empno from emp

复选框来源设置:

来源:始终 - SQL查询返回冒号分隔值

select c001
from apex_collections
where collection_name = 'CHECKBOX_EXAMPLE'

这将选择所有选定的值,并用冒号将它们连接在一起。复选框将获取这些值并将其标记为已选中。

提交后的过程:

DECLARE
    l_vc_arr2    APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
  apex_collection.create_or_truncate_collection('CHECKBOX_EXAMPLE');
    l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE(:P37_CHECKBOXES);
    FOR z IN 1..l_vc_arr2.count LOOP
        apex_debug.message(l_vc_arr2(z));
        apex_collection.add_member(p_collection_name => 'CHECKBOX_EXAMPLE', p_c001 => l_vc_arr2(z));
    END LOOP;
END;

答案 1 :(得分:0)

如果要在特定检查事件上插入数据,则可以使用“按需运行”进程使用Ajax回调。这将从JavaScript代码调用。 您可以参考此博客:http://warp11.nl/2011/04/execute-page-process-with-ajax-callback/