Foxtable(狐表)用户栏目专家坐堂 → [求助]角色匹配问题


  共有2281人关注过本帖树形打印复制链接

主题:[求助]角色匹配问题

帅哥哟,离线,有人找我吗?
martin723
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:2036 威望:0 精华:0 注册:2019/3/20 10:45:00
[求助]角色匹配问题  发帖心情 Post By:2019/4/2 16:27:00 [只看该作者]

在系统用户表里面用户对应的角色可以有多个,例如:user1的角色有role1,role2,role3
自己做了个一个权限表,每张表也对应有个角色字段,
sheet1的角色有role2,role4
sheet2对应的角色有role3,role5
sheet3对应角色role4
怎么能将权限表中用户 user1对应的sheet1,sheet2筛选出来

用户表字段 Name,config,角色可以从cofig里面提取
权限表字段 TableName,role
[此贴子已经被作者于2019/4/2 16:30:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/2 16:34:00 [只看该作者]

合成这样的条件,如

 

"第一列 like '%role1%' or 第一列 like '%role2%' or 第一列 like '%role3%'"

 

也就是把user1循环合成,如

 

for each s as string in user.roles.split(",")


 回到顶部
帅哥哟,离线,有人找我吗?
martin723
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:2036 威望:0 精华:0 注册:2019/3/20 10:45:00
  发帖心情 Post By:2019/4/2 16:57:00 [只看该作者]

谢谢啦!但这样还有个问题,比如有角色aaa,aa,
如果用户有aa这个角色,表a有aaa这个角色
用户登录的时候,表a也会显示
[此贴子已经被作者于2019/4/2 17:17:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/2 17:42:00 [只看该作者]

合成这样的条件,如

 

" ',' + 第一列 + ',' like '%,role1,%' or ',' + 第一列 + ',' like '%,role2,%' or ',' + 第一列 + ',' like '%,role3,%'"


 回到顶部
帅哥哟,离线,有人找我吗?
martin723
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:2036 威望:0 精华:0 注册:2019/3/20 10:45:00
  发帖心情 Post By:2019/4/2 17:47:00 [只看该作者]

Dim dtb As New DataTableBuilder("用户临时表")
dtb.AddDef("name", Gettype(String), 32)
dtb.Build()
Dim dr As DataRow
For Each sr As String In user.Roles.Split(",")
DataTables("用户临时表").AddNew
dr("name") = sr
Next

这段代码有什么问题?

 回到顶部
帅哥哟,离线,有人找我吗?
martin723
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:2036 威望:0 精华:0 注册:2019/3/20 10:45:00
  发帖心情 Post By:2019/4/2 17:56:00 [只看该作者]

太难了,没看懂,能直接给个完整的sql语句看看吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/2 17:59:00 [只看该作者]

以下是引用martin723在2019/4/2 17:56:00的发言:
太难了,没看懂,能直接给个完整的sql语句看看吗?

 

 

Dim roles = "A,AA,bb"
Dim str As String = ""
For Each s As String In roles.split(",")
    str &= " or ','+第一列+',' like '%," & s & ",%'"
Next
msgbox(str.SubString(3))


 回到顶部
帅哥哟,离线,有人找我吗?
martin723
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:245 积分:2036 威望:0 精华:0 注册:2019/3/20 10:45:00
  发帖心情 Post By:2019/4/3 8:21:00 [只看该作者]


第一列前面后面都加上一个逗号是什么意思?没看太懂,正常不是

第一列 like '%,A,%'  or 第一列 like '%,AA,%'  or 第一列 like '%,bb,%'  这样吗:

另外如果加上逗号判断的话,角色前后两个,前面的前面少个逗号,后面的后面少个逗号,会不会落下两个角色
[此贴子已经被作者于2019/4/3 8:27:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/3 8:44:00 [只看该作者]

认认真真看,照抄代码即可。在【第一列】前后加入逗号以后,再比较筛选

 

Dim roles = "A,AA,bb"
Dim str As String = ""
For Each s As String In roles.split(",")
    str &= " or ','+第一列+',' like '%," & s & ",%'"
Next
msgbox(str.SubString(3))


 回到顶部