以文本方式查看主题 - 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 -- 窗口关联表权限问题
针对窗口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\'时,可编辑其余列。
|
||||
-- 作者: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列允许编辑,比如示范的第五列,第六列,代码应该怎么写。
[此贴子已经被作者于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 经测试合格。
[此贴子已经被作者于2009-12-18 1:22:42编辑过]
|