我是这么想的先定义一个全局代码 public RightTb as table,用来定义Link对应的主表。
在TopicLinkClick事件中,Select Case e.Link.Name
Case "业务01"
MainTable = Tables("表A")
…………
end select
RightTb = MainTable ’当打开 Link时,将主表名赋值给全局代码RightTb
Dim dr As DataRow = DataTables("权限表").Find("判断是否有编辑权限的Filter")
RightTb.allowEdit = dr IsNot Nothing AndAlso dr("可编辑") = True
然后在项目的CurrentTableChanged事件中,代码如下:
Select Case CurrentTable.Name
Case "表A.表B"
CurrentTable.AllowEdit = RightTb.AllowEdit = true
End select
但问题出来了。用户登录之后打开系统,点了Link("业务01")
Tables("表A")确实是象预想的一样,被锁定了。
但是它的子表 Tables("表A.表B")并没有跟预想的一样被锁定,还可以增删改。
我把鼠标停在表A.表B里,用命令窗口写了
output.show(RightTb.Name) '显示结果为表A,说明全局代码确实打开的是表A
output.show(RightTb.AllowEdit) '显示结果为False,说明表A确实被锁定了
output.show(CurrentTable.Name) '显示结果为表A.表B,说明当前表确实是子表
output.show(tables("表A.表B").AllowEdit) '显示结果为true,说明子表并未被锁定 ——————这是怎么回事呢,项目管理的CurrentTableChanged事件不起作用吗?
[此贴子已经被作者于2014-4-17 21:07:36编辑过]