以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 递归函数与权限问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=22152) |
|||||||||||||||||||||||||||||||||||||||
-- 作者:小猪鑫鑫 -- 发布时间:2012/8/4 9:02:00 -- 递归函数与权限问题 狐爸:您好!我整理了一个小项目给您做测试用,在这项目中有三个表,一个[人事岗位配置表],用于设置公司中不同的部门与车间的岗位,并通过岗位编号标明了上下级关系;然后第二张表是[人事表],用于记录员工的身份信息,每一个员工都有一个岗位编号,从而每一个人都是有岗位的,同时每个岗位从[人事岗位配制表]中继承了他的领导,从而可以自动即时确定人与人之间的上下级关系,产生人事架构图;现在的问题在第三张表,第三张表是我们公司的出库明细表即领料表,里面有领料人的工号与岗位编号,现在我的需求是想通过窗口中的"加载我的下属的记录"这么一个按键,来实现这么一个功能,任何人登录系统,如果他没有直接下属的话,则点击这个按键只能加载他自己的记录,有下属的人登录,则即加载自己的记录也可以加载自己直接下属的记录(同时包括直接下属的直接下属的记录),以此类推,也就是自己能加载自己与自己的所有直接下属信息;
比如说用上面的01367登录系统,则点击"加载按扭"能加载出前纺机修班长及前纺机修班中所有机修的领料情况,如用01029主管的工号登录,则可以加载出主管自己以及前纺机修班长,织布机修班长以及他们的下属的资料,,如我用01600部长的身份登录,则可以加载设备部的所有人的资料了,这样我们就可以方便职能审批,互不影响了 请狐爸赐教,所有的密码都是888,谢谢狐爸 |
|||||||||||||||||||||||||||||||||||||||
-- 作者:blackzhu -- 发布时间:2012/8/4 13:34:00 -- 做来做去无非就是加载条件: 你可以利用登录的用户名 去登录表查询 岗位 职位等信息 找到后按照这个条件找其他信息加载.
|
|||||||||||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2012/8/4 13:44:00 -- 从岗位编号看不出他们之间的上下级关系· 所以单从这个表是无法实现的。。。 |
|||||||||||||||||||||||||||||||||||||||
-- 作者:小猪鑫鑫 -- 发布时间:2012/8/4 14:40:00 -- 两位大佬:今天有事出去了,没有及时看到,回复较晚,见谅! 这个问题不是一个简单的加载问题,它是一个新的按上下级关系进行加载然后进行权限处理的问题,上下级关系在[人事岗位配置表]中已经设置好了(领导字段列),我的一个想法是有一个全局变量,将每一个登录的人按其岗位编号将其属下的岗位编号生成一个集,然后在加载时利用这个变量集,但我不会做,因为一个岗位编号下,会有几个下属,同时下属下面还有他的下属,最多的有6层关系,怎么样得到这个变量,我不会,所以恳请狐爸帮我! 我坚信这个问题能得到解决,对foxtable的权限控制绝对是一个有力的支持与提高,同时这种权限控制对一些特定的审批将会简化很多很多,因为你加载的只有你自己与你的下属,每个人都是一样,这样就归口管理及审批了.因为一个公司有很多部门,也就有很多部门经理,每个部门经理下面又有不同的主管,班长等,普通的人事表中是没有体现这种上下级关系的,所以在权限审批时,只有层级的概念,经理大过主管,主管大过班长,但有时生产部门的班长的情况并不想销售部门的经理来处理,所以我相信,我的这种需求一定是有人需要的,只不过大家不会表达 狐爸:请帮我看看,谢谢! |
|||||||||||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2012/8/4 17:12:00 -- 打开你的项目后发现可以解决:
1、XR人事表· 筛选代码前 · 用下面代码取得所有下级的‘岗位编号’后就可以筛选出所有下级了: Dim s As String
2、XR人事岗位配置表·中你那个“领导”列设计的不好,不能自动得到! 你可以参考一般会计软件中的会计科目的代码方式。这样就可以不用“领导”列了,只要“岗位编号”就行了,而且筛选下级时轻而易举···
|
|||||||||||||||||||||||||||||||||||||||
-- 作者:小猪鑫鑫 -- 发布时间:2012/8/4 17:26:00 -- mr725狐神:谢谢您的回复,但还是有问题 1、通过您的这种取岗位编号的方法,只能选出当前领导的直接下属,而不能把其直接下属的直接下属提取出来,与我的需求不同,我要的是有层级的,包括自己及自己以下的所有岗位; 2、第二点我不是很明白怎么做,是否可以提供一个简单的案例,因为设置领导例是为了完成组织架构图而来的,是否有其它的方法即能得到组织架构图,又能轻松得到我的需求的,当然最好了,请狐神赐教!
|
|||||||||||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2012/8/4 18:19:00 -- 1、按你这种设计,下下级的取得要重复用select来完成,太麻烦了··· 也就是把上一个select中的所有“领导”都当着本次select里的“岗位编号”··· 这样套嵌6次或更多,将严重影响速度。
2、其实就是系统自带例子中的‘会计科目.Table’,就是一级、二级、三级 ····1001、100101、10010101··· 你的岗位编号应该这样编,筛选时就容易了 只要【like ‘1001*’】它的下级就全出来了。 [此贴子已经被作者于2012-8-4 18:23:08编辑过]
|
|||||||||||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2012/8/4 19:44:00 -- 仔细看了你的项目,这样也可以实现:
1、增加几个全局变量 “dlz ” (vars("dlz") 2、在用户登陆窗口的“UserName”控件的SelectedIndexChanged事件中增加一行:vars("dlz") = dr("姓名") 3、在出库明细窗口的“加载我的下属记录”按钮中设置代码: DataTables("wl出库明细表").load
|
|||||||||||||||||||||||||||||||||||||||
-- 作者:小猪鑫鑫 -- 发布时间:2012/8/4 21:31:00 -- 额的神:您还在吗?您给我的代码运行后显示,“未将对象引用设置到对象的实例”,不知为什么?请指点;同时我原本已设了全局代码_UserGroup为登录人的岗位编号,同时您的变量S最后还是没包含下属的下属啊,请再帮我看看,谢谢您! |
|||||||||||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2012/8/4 21:41:00 -- ,“未将对象引用设置到对象的实例” s = "(" & s.trim(",") & ")" 前面加个判断:if s > "" |