以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这样的用户授权要怎么写代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25955)

--  作者:zpx_2012
--  发布时间:2012/11/20 17:31:00
--  这样的用户授权要怎么写代码?

各位老师,

 

想根据部门及角色来对表单的流程进行授权,用户登陆时只加载相应的表单及流程,如下图

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20121120-002.jpg
图片点击可在新窗口打开查看

 

比如部门为“业务部”角色为“经理”的用户登陆时,只加载授权表中每行用户列中“.”左边是业务部,并且“.”右边是经理的表单及流程

 

请教代码要怎么写,主要就是如何快速取得列中“.”左右两边的值出来

 

谢谢!

 

 


--  作者:lin_hailun
--  发布时间:2012/11/20 17:45:00
--  
 感觉问题不像说的那么复杂。

 dim drs as list(of datarow) = Datatables("授权").Select("用户 like \'*" & 业务部 & "." & 经理 & "*\'")

--  作者:zpx_2012
--  发布时间:2012/11/20 18:12:00
--  

谢谢小林,

我原本的想法是遍历表中所有行,然后取出用户列中的以“,”分隔的值形成数组或集合,然后再用用每个的“.”左右两边来判断,

但是你好象把它说得太简单了,我说业务部及经理其实是举个例子,登录的同一个用户是只有一个部门但有多个角色

比如(经理,生管,文员)等, 假设部门是变量A,角色是变量B,那判断时就要是:

 

dim drs as list(of datarow) = Datatables("授权").Select("用户 like \'*" & A & "." & B & "*\'")

 

但必须是用同一个值的“.”左右两边的值来进行判断,比如列中值是“业务部.经理,技术部.文员”如分开判断则可能出现业务部的文员或技术部的经理也可以加载就不正确了。 

 

上面的代码可以实现吗?

 

在命令窗口中执行

Output.Show("业务部.经理,生产部.经理,技术部.文员" Like "*业务部.经理*")显示true;

 

Output.Show("业务部.经理,生产部.经理,技术部.文员" Like "*业务部.经理,生管,文员,*")

就显示false,说明多个值时就不可以。

[此贴子已经被作者于2012-11-20 19:39:15编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/20 20:26:00
--  
 合并一下应该可以。

 比如 业务部,经理,生管,文员。

 dim filter as string = "1=2 "
 for each r as string in Roles
     filter = filter & " or 用户 like \'*" & 业务部 & "." & r & "*\'"
 next
 dim drs as list(of datarow) = Datatables("授权").Select(filter)
--  作者:zpx_2012
--  发布时间:2012/11/20 21:51:00
--  

遍历一下合并应该可以了,只是不知道数据多时速度会不会影响很大,那就再说了。

谢谢!