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

Saving Checkbox data in a DB column

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

然后,当我再次登录到应用程序时,应用程序现在应该根据插入 table "emp_selected" 的数据勾选(选中)复选框以及来自 table "emp" 并且当我取消选中一些预选复选框并选中新复选框时,它应该在 "emp_selected".

中进行相应更新

我的 Oracle APEX 版本是 4.2。

如果您想在特定检查事件中插入数据,那么您可以使用 Ajax 回调和 运行 按需处理。它将收到来自 JavaScript 代码的调用。 你可以参考这个博客:http://warp11.nl/2011/04/execute-page-process-with-ajax-callback/

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

我的所有设置也都在那个页面上。为了这个例子,我使用一个顶点集合来模拟一个存储值的 table 。原理完全相同 - 您只需根据自己的选择来适应 table。

复选框 LOV SQL:

select ename, empno from emp

复选框源设置:

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

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;