以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口关联表权限问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=5528)

--  作者:wqc360
--  发布时间: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
--  发布时间:2009/12/17 15:23:00
--  
这样的提问会把人吓跑的。
--  作者:czy
--  发布时间: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
--  发布时间: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
--  发布时间:2009/12/17 22:31:00
--  

其余列指的是哪些列?


--  作者:czy
--  发布时间: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
--  发布时间: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
--  发布时间:2009/12/18 0:46:00
--  
红色部分能不能用行锁定代码来写,DataTables("表B") 解除行锁定代码= r2("工序班组") = "B"
--  作者:czy
--  发布时间: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
--  发布时间: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编辑过]