Foxtable(狐表)用户栏目专家坐堂 → 用户权限问题请教


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

主题:用户权限问题请教

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


加好友 发短信
等级:幼狐 帖子:141 积分:1227 威望:0 精华:0 注册:2018/2/22 10:06:00
用户权限问题请教  发帖心情 Post By:2019/5/15 15:31:00 [只看该作者]

老师,请教个问题

我有一个资产管理主表,其为公司资产管理基础表,表内是公司资产明细,对于每一项资产而言,有“使用者”及“所有者”,如果是本公司采购资产仍由本公司使用,则“使用者”及“所有者”均为本公司,如果本公司采购但借给B公司使用,则“使用者”为B公司,“所有者”为本公司,以上是关于“所有者”及“使用者”的列属性介绍

我在项目事件中设置加载代码如下:
DataTables("资产管理主表").LoadFilter = "',' + 公司标记组 + ',' like '%," & User.Roles.replace(",", "','") & ",%'"
以此保证当本公司的人员登录后,无论“所有者”还是“使用者”,涉及本公司的均会加载

请教内容如下:
我在设置用户权限时,如果,只设置单一公司权限,系统正常使用,数据加载正常,但是,当某员工是双重身份或三重身份,也就是,某员工同时管理两家或三家公司时,在权限中选定两家或三家公司后,登录系统后不加载任何数据,请老师给指导下,看看代码应做如何修改

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


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

dim filter as string = "1=2"

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

    filter &= " or ',' + 公司标记组 + ',' like '%," & s & ",%'"

next

msgbox(filter)

DataTables("资产管理主表").LoadFilter = filter


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


加好友 发短信
等级:幼狐 帖子:141 积分:1227 威望:0 精华:0 注册:2018/2/22 10:06:00
  发帖心情 Post By:2019/5/15 15:55:00 [只看该作者]

谢谢老师

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


加好友 发短信
等级:幼狐 帖子:141 积分:1227 威望:0 精华:0 注册:2018/2/22 10:06:00
  发帖心情 Post By:2019/5/16 12:10:00 [只看该作者]

老师帮我看看以下代码哪里有问题,在用管理员登录时报错
代码如下:
If User.Group = "单独执行" Then
    DataTables("项目基础表").LoadFilter = "公司标记 in ('" & User.Roles.replace(",", "','") & "')"
    DataTables("收入明细录入台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("成本明细录入台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("财务收支台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("fa piao台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("员工档案").LoadFilter = "公司标记 in ('" & User.Roles.replace(",", "','") & "')"
    DataTables("公司档案").LoadFilter = "公司标记 in ('" & User.Roles.replace(",", "','") & "')"
    DataTables("资产管理主表").LoadFilter = "[_Identify] Is Null" '不加载任何数据
    DataTables("电台广告排期录入表").LoadFilter = ""
ElseIf User.Group = "单独业务" Then
    DataTables("项目基础表").LoadFilter = "公司标记 in ('" & User.Roles.replace(",", "','") & "')"
    DataTables("收入明细录入台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("成本明细录入台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("财务收支台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("fa piao台账").LoadFilter = "',' + 执行人姓名 + ',' like '%," & user.Name & ",%'"
    DataTables("员工档案").LoadFilter = "公司标记 in ('" & User.Roles.replace(",", "','") & "')"
    DataTables("公司档案").LoadFilter = "公司标记 in ('" & User.Roles.replace(",", "','") & "')"
    DataTables("资产管理主表").LoadFilter = "[_Identify] Is Null" '不加载任何数据
    DataTables("电台广告排期录入表").LoadFilter = ""
Else
    Dim filter As String = "1=2"
    For Each s As String In user.roles.split(",")
        filter &= " or ',' + 公司标记 + ',' like '%," & s & ",%'"
    Next
    DataTables("项目基础表").LoadFilter = filter
    DataTables("收入明细录入台账").LoadFilter = filter
    DataTables("成本明细录入台账").LoadFilter = filter
    DataTables("财务收支台账").LoadFilter = filter
    DataTables("fa piao台账").LoadFilter = filter
    DataTables("员工档案").LoadFilter = filter
    DataTables("公司档案").LoadFilter = filter
    DataTables("资产管理主表").LoadFilter = filter
    DataTables("电台广告排期录入表").LoadFilter = ""
End If

DataTables("项目基础表").Load()
DataTables("收入明细录入台账").Load()
DataTables("成本明细录入台账").Load()
DataTables("财务收支台账").Load()
DataTables("fa piao台账").Load()
DataTables("员工档案").Load()
DataTables("公司档案").Load()
DataTables("资产管理主表").Load()
DataTables("电台广告排期录入表").Load()
StatusBar.Message3 = Date.Today & "  " &  User.Name
vars("YHM") = user.name '将登陆用户名赋值给YHM,报表或其他位置中有引用


报错内容如下:
.NET Framework 版本:2.0.50727.8940
Foxtable 版本:2018.10.9.1
错误所在事件:项目,LoadUserSetting
详细错误信息:
未将对象引用设置到对象的实例。

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


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

If user.roles = "" then

    msgbox("没有角色")

Else

    '本来代码

End If


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


加好友 发短信
等级:幼狐 帖子:141 积分:1227 威望:0 精华:0 注册:2018/2/22 10:06:00
  发帖心情 Post By:2019/5/16 14:55:00 [只看该作者]

已解决,谢谢老师

 回到顶部