Foxtable(狐表)用户栏目专家坐堂 → 窗口关联表权限问题


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

主题:窗口关联表权限问题

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5695 威望:0 精华:0 注册:2009/4/17 18:42:00
窗口关联表权限问题  发帖心情 Post By:2009/12/17 14:42:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table

针对窗口1要求:
1.用户组“管理员”,“部门主管”无编辑权限限制。其余用户组表A全部、表B“图号”,“名称”,“订单号”,“工序班组"列禁止编辑.
2.用户组“1组”权限。表A“工序班组”列=‘A’时,表A.表B可新增行;表A.表B当前行“班组"='A'时,可编辑其余列。
2.用户组“2组”权限。表A“工序班组”列=‘B’时,表A.表B可新增行;表A.表B当前行“班组"='B'时,可编辑其余列。
2.用户组“3组”权限。表A“工序班组”列=‘C’时,表A.表B可新增行;表A.表B当前行“班组"='C'时,可编辑其余列。
2.用户组“4组”权限。表A“工序班组”列=‘D’时,表A.表B可新增行;表A.表B当前行“班组"='D'时,可编辑其余列。
[此贴子已经被作者于2009-12-17 14:44:09编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/17 15:23:00 [只看该作者]

这样的提问会把人吓跑的。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/17 15:36:00 [只看该作者]

1、

Select Case User.Group
    Case "管理员","部门主管"
        DataTables("表A").AllowEdit = False
        DataTables("表B").AllowEdit = False
    Case Else
        DataTables("表A").AllowEdit = False
        DataTables("表B").AllowEdit = true
        DataTables("表B").DataCols("图号").AllowEdit = False
        DataTables("表B").DataCols("名称").AllowEdit = False
        DataTables("表B").DataCols("订单号").AllowEdit = False
        DataTables("表B").DataCols("工序班组").AllowEdit = False
End Select

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5695 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/17 21:37:00 [只看该作者]

搞定一个,多谢C版提供:
Select Case User.Group
    Case "管理员","部门主管"
        DataTables("表A").AllowEdit = true
        DataTables("表B").DataCols("图号").AllowEdit = true
        DataTables("表B").DataCols("名称").AllowEdit = true
        DataTables("表B").DataCols("订单号").AllowEdit = true
        DataTables("表B").DataCols("工序班组").AllowEdit = true
    Case Else
        DataTables("表A").AllowEdit = False
        DataTables("表B").DataCols("图号").AllowEdit = False
        DataTables("表B").DataCols("名称").AllowEdit = False
        DataTables("表B").DataCols("订单号").AllowEdit = False
        DataTables("表B").DataCols("工序班组").AllowEdit = False
End Select
下一步请帮帮忙:
.用户组“1组”权限。表A“工序班组”列=‘A’时,关联表“表A.表B”可新增行;关联表“表A.表B”当前行“班组"='A'时,可编辑其余列。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/17 22:31:00 [只看该作者]

其余列指的是哪些列?


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/17 22:52:00 [只看该作者]

启用定时器。

'窗口TimerTick代码
Dim r1 As Row = Tables("表A").Current
Dim r2 As Row = Tables("表B").Current
Select Case User.Group
    Case "1组"
        DataTables("表A").AllowEdit = True
        DataTables("表A").AllowAddNew  = r1("工序班组") = "A"
        DataTables("表B").AllowAddNew  = r1("工序班组") = "A"
        '允许编辑指定列代码,下一行代码只是示例
        DataTables("表B").DataCols("图号").AllowEdit = r2("工序班组") = "A"
    Case "2组"
        DataTables("表A").AllowEdit = True
        DataTables("表A").AllowAddNew  = r1("工序班组") = "B"
        DataTables("表B").AllowAddNew  = r1("工序班组") = "B"
        '允许编辑指定列代码,下一行代码只是示例
        DataTables("表B").DataCols("图号").AllowEdit = r2("工序班组") = "B"
       
        '其它分组代码可参照上面
End Select

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5695 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/18 0:32:00 [只看该作者]

新增行已经搞定,多谢C版的葫芦,经我修改,现达到我的意图了:
Dim r1 As Row = Tables("表A").Current
Dim r2 As Row = Tables("表B").Current
Select Case User.Group
    Case "1组"
        DataTables("表B").AllowAddNew  = r1("工序班组") = "A"
        '允许编辑指定列代码,下一行代码只是示例
        DataTables("表B").DataCols("第五列") .AllowEdit = r2("工序班组") = "A"
    Case "2组"
        DataTables("表B").AllowAddNew  = r1("工序班组") = "B"
        '允许编辑指定列代码,下一行代码只是示例
        DataTables("表B").DataCols("第五列").AllowEdit = r2("工序班组") = "B"
       
        '其它分组代码可参照上面
End Select
现问题是允许编辑列不对,及红色代码,现在不能正常,表B第五列始终不能编辑,而且我的项目是要n列允许编辑,比如示范的第五列,第六列,代码应该怎么写。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table

[此贴子已经被作者于2009-12-18 0:32:54编辑过]

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5695 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/18 0:46:00 [只看该作者]

红色部分能不能用行锁定代码来写,DataTables("表B") 解除行锁定代码= r2("工序班组") = "B"

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/12/18 1:15:00 [只看该作者]

看来还不能偷懒。

Dim r1 As Row = Tables("表A").Current
Dim r2 As Row = CurrentTable.Current
Select Case User.Group
    Case "1组"
        if r2 IsNot Nothing Then
            CurrentTable.AllowAddNew  = r1("工序班组") = "A"
            CurrentTable.Cols("第五列").AllowEdit = r2("工序班组") = "A"
        Else
            CurrentTable.AllowAddNew  = False
            CurrentTable.Cols("第五列").AllowEdit = False
        End If
    Case "2组"
        if r2 IsNot Nothing Then
            CurrentTable.AllowAddNew  = r1("工序班组") = "B"
            CurrentTable.Cols("第五列").AllowEdit = r2("工序班组") = "B"
        Else
            CurrentTable.AllowAddNew  = False
            CurrentTable.Cols("第五列").AllowEdit = False
        End If
End Select

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5695 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2009/12/18 1:22:00 [只看该作者]

我把红色部分删除,在表属性PrepareEdit事件中加代码:
If e.Row("工序班组") = "A" AndAlso User.Group <> "1组"  and User.Group <> "管理员" and User.Group <> "部门主管" Then
    e.Cancel = True
End If
If e.Row("工序班组") = "B" AndAlso User.Group <> "2组" and User.Group <> "管理员" and User.Group <> "部门主管" Then
    e.Cancel = True
End If
If e.Row("工序班组") = "C" AndAlso User.Group <> "3组" and User.Group <> "管理员" and User.Group <> "部门主管" Then
    e.Cancel = True
End If
If e.Row("工序班组") = "D" AndAlso User.Group <> "4组" and User.Group <> "管理员" and User.Group <> "部门主管" Then
    e.Cancel = True
End If

经测试合格。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.table

[此贴子已经被作者于2009-12-18 1:22:42编辑过]

 回到顶部
总数 12 1 2 下一页