之前边做应用程序边完善数据库表,应用程序做出来了,但是数据库表也面目全非了,很多数据库字段都要重新设计,踩了个坑但是也是一种学习:每次代码开发也好,应用程序搭建也好,先做好数据库表设计,有了数据库再来开发才能事半功倍,否则只能适得其反、事倍功半甚至无效返工。
PDManer元数建模_王小小鸭的博客-CSDN博客https://blog.csdn.net/clover_oreo/article/details/132314390?spm=1001.2014.3001.5502
部门用户权限应用的设计和创建(进行中)_王小小鸭的博客-CSDN博客https://blog.csdn.net/clover_oreo/article/details/132281875?spm=1001.2014.3001.5502
做好了前面的准备工作,现在可以着手返工啦~
之前创建交互式网格的时候连同表单一起创建结果踩坑,所以交互式网格和表单分开创建,选择同一个数据源
p2、p12都来自于USER_TEST_WXX2
用户表单执行修改代码
declare
v_row_count number(10) := 0;
begin
update USER_TEST_WXX2 set
NAME = :P12_NAME,
GENDER = :P12_GENDER,
MOBILE = :P12_MOBILE,
JOB_NUMBER = :P12_JOB_NUMBER,
PASSWORD = :P12_PASSWORD,
EMAIL = :P12_EMAIL,
DEVELOPER_ID = :P12_DEVELOPER_ID,
IS_LEAVE = :P12_IS_LEAVE,
REMARK = :P12_REMARK,
UPDATE_DATE = sysdate
where USER_ID = :P36_USER_ID;
v_row_count := SQL%ROWCOUNT;
apex_util.set_session_state('P12_ROW_COUNT',v_row_count);
end;
修改时要提交的项包含ID(从网格传值过来,知道修改哪条记录),不包含UPDATE_DATE(时间类的系统自动获取)
declare
V_COUNT number(18) := 0;
begin
-- 删除关联的部门用户数据
DELETE DEPT_USER_TEST_WXX WHERE USER_ID IN(SELECT * FROM TABLE(SPLITSTR(:P2_USER_ID,',')));
-- 删除关联的用户角色数据
DELETE ROLE_USER_TEST_WXX WHERE USER_ID IN(SELECT * FROM TABLE(SPLITSTR(:P2_USER_ID,',')));
--删除部门数据
DELETE USER_TEST_WXX2 WHERE USER_ID IN(SELECT * FROM TABLE(SPLITSTR(:P2_USER_ID,',')));
V_COUNT:= SQL%ROWCOUNT;
APEX_UTIL.SET_SESSION_STATE('P2_ROW_COUNT',V_COUNT);
end;
新增用户测试出现问题
Ajax 调用为Execute Server-Side Code返回了服务器错误ORA-01400: 无法将 NULL 插入 ("YWJA"."USER_TEST_WXX2"."NAME")。ame
原因:执行修改的表单pl/sql传入的USER_NAME有误,改成正确的即可
像性别(男/女)、是否启用(是/否)、是否离职(是/否)、状态(未开始/进行中/已完成/已逾期)这类的固定内容的列可以将其概括到值列表,需要的时候直接到共享组件获取即可,大大便捷了开发。
以性别为例
部门和权限之类的会有上级部门、上级权限,所以会记录对应上级部门、权限的ID,那么ID从哪里来?自然是查询得来的,查询语句写在哪里?
后来参考了其他应用程序的上级id,发现和主键ID一样设为隐藏(×)
值受保护开启
(后来被证实是错误的,像部门这样的含级联关系的字段或关系可以直接引用级联)
先以上级部门id“PARENT_ID”为例,复制一个用于示范
每次新增如果有很多项,但是我想用户一进来就能看到重点需要填的内容,有的放矢
这就可以应用到光标聚焦focus
在页面动态操作定义一个初始化事件
$(function(){
$('#P12_NAME').focus();
});
效果