采用单列目录树。可以很方便地找到上级部门或本部门所有人员,在这里巧用:like (这一点我曾经在论坛提到过),结合狐表的单列目录树功能,非常方便地管理用户!
比如:人员信息列:
总公司\工程部\0001 张部长
总公司\工程部\0002 王会计
总公司\财务部\0003 李部长
总公司\北京分公司\第一项目部\1001 张三
总公司\北京分公司\第一项目部\1002 李四
总公司\北京分公司\第一项目部\1003 王五
总公司\北京分公司\第二项目部\2001 赵六
上述值通过人员添加或者目录树直接写入人员信息列即可,只要有一定的规则即可
查找某个人员:
datatables("用户管理").find("人员信息 like '*1003 王五'")
获取人员”李四“的上级部门:
dim s as string = "总公司\北京分公司\第一项目部\1002 李四"
s = s.Replace("\1002 李四","") '这里的s即为李四的上级部门
查找李四所属部门的全体人员:
dim s as string = "总公司\北京分公司\第一项目部\1002 李四"
s = s.Replace("\1002 李四","") '这里的s即为李四的上级部门
datatables("用户管理").Select("人员信息 like '" & s & "*'")
登录,在登录界面的确定按钮中,用代码将获得的用户名、用户ID、部门信息可以用全局变量保存,其他写代码需要引用的时候直接引用相应全局变量的值,避免授权工作中重复写代码,更换人员重新登录的时候,这些信息自然就改过来了!
角色管理和授权表也是如此,对权限管理尽可能采用多记录、而不是太多的列来管理,写代码就容易多了,个人心得,仅此分享!