部门用户权限应用设计及创建&一些实用小细节

前言

之前边做应用程序边完善数据库表,应用程序做出来了,但是数据库表也面目全非了,很多数据库字段都要重新设计,踩了个坑但是也是一种学习:每次代码开发也好,应用程序搭建也好,先做好数据库表设计,有了数据库再来开发才能事半功倍,否则只能适得其反、事倍功半甚至无效返工。

数据库表设计

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

做好了前面的准备工作,现在可以着手返工啦~

细节

1.交互式网格和表单分开创建

之前创建交互式网格的时候连同表单一起创建结果踩坑,所以交互式网格和表单分开创建,选择同一个数据源

p2、p12都来自于USER_TEST_WXX2

部门用户权限应用设计及创建&一些实用小细节_第1张图片

 用户表单执行修改代码

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;

2.无论是新增修改还是删除,一定要仔细核对输入的项和返回的项

修改时要提交的项包含ID(从网格传值过来,知道修改哪条记录),不包含UPDATE_DATE(时间类的系统自动获取)

3.删除用户也要注意删除相关关联表

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;

4.交互式网格转到表单要传值,比如删除、选中

部门用户权限应用设计及创建&一些实用小细节_第2张图片

新增用户测试出现问题

Ajax 调用为Execute Server-Side Code返回了服务器错误ORA-01400: 无法将 NULL 插入 ("YWJA"."USER_TEST_WXX2"."NAME")。ame

部门用户权限应用设计及创建&一些实用小细节_第3张图片

 原因:执行修改的表单pl/sql传入的USER_NAME有误,改成正确的即可

5.自定义值列表

像性别(男/女)、是否启用(是/否)、是否离职(是/否)、状态(未开始/进行中/已完成/已逾期)这类的固定内容的列可以将其概括到值列表,需要的时候直接到共享组件获取即可,大大便捷了开发。

共享组件→值列表→创建→创建值列表:从头开始→定义名称 →类型 Static→设置显示值和对应返回值

部门用户权限应用设计及创建&一些实用小细节_第4张图片

部门用户权限应用设计及创建&一些实用小细节_第5张图片

 部门用户权限应用设计及创建&一些实用小细节_第6张图片

 是否启用IS_ENABLE部门用户权限应用设计及创建&一些实用小细节_第7张图片

是否离职IS_LEAVE

部门用户权限应用设计及创建&一些实用小细节_第8张图片

将自定义值列表应用到程序中

在交互式网格中用户列表找到对应的列→标识 类型:选择列表→值列表 类型:共享组件 →值列表:选择对应的值列表→关闭“显示附加值”“显示空值”

以性别为例 

部门用户权限应用设计及创建&一些实用小细节_第9张图片

部门用户权限应用设计及创建&一些实用小细节_第10张图片

 效果展示部门用户权限应用设计及创建&一些实用小细节_第11张图片

【我的疑惑】

 部门和权限之类的会有上级部门、上级权限,所以会记录对应上级部门、权限的ID,那么ID从哪里来?自然是查询得来的,查询语句写在哪里?

对级联的探索和思考

后来参考了其他应用程序的上级id,发现和主键ID一样设为隐藏(×)

部门用户权限应用设计及创建&一些实用小细节_第12张图片

值受保护开启

部门用户权限应用设计及创建&一些实用小细节_第13张图片

(后来被证实是错误的,像部门这样的含级联关系的字段或关系可以直接引用级联)

先以上级部门id“PARENT_ID”为例,复制一个用于示范

部门用户权限应用设计及创建&一些实用小细节_第14张图片

在项→源→列 选择数据来源部门用户权限应用设计及创建&一些实用小细节_第15张图片

 

光标聚焦

每次新增如果有很多项,但是我想用户一进来就能看到重点需要填的内容,有的放矢

这就可以应用到光标聚焦focus

在页面动态操作定义一个初始化事件

$(function(){    
    $('#P12_NAME').focus();
});

部门用户权限应用设计及创建&一些实用小细节_第16张图片

 效果

部门用户权限应用设计及创建&一些实用小细节_第17张图片

 

你可能感兴趣的:(oracle,apex,PL/SQL,数据库,oracle,apex)