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



我在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。

具有多个复选框的顶点复选框会将其状态保存为所有选定值,这些值用冒号连接在一起,例如One:Two:Three
因此,您必须分离这些值,循环使用它们,然后保存它们
您需要正确配置复选框源
请参阅我设置的示例页面(apex_demo/demo)

我所有的设置都在那个页面上。为了这个例子,我使用一个顶点集合来模拟一个存储值的表。原理是完全一样的——你只需要根据你的选择来适应你的桌子。

复选框LOV SQL:

select ename, empno from emp

复选框源设置:

来源:Always-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;

如果您想插入特定检查事件的数据,那么您可以使用带有按需运行流程的Ajax回调。它将从JavaScript代码中获得调用。你可以参考这个博客:http://warp11.nl/2011/04/execute-page-process-with-ajax-callback/

最新更新