以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗口角色权限  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102290)

--  作者:沪上游客
--  发布时间:2017/6/16 17:32:00
--  [求助]窗口角色权限
Dim ctl As WinForm.Control = e.Sender
Select Case ctl.BindingField
    Case "增值税发票开票登记.合同编号","增值税发票开票登记.申请日期","增值税发票开票登记.外经证开票日期"
        If User.IsRole("开票录入") Then
            ctl.ReadOnly = BooleanEnum.False \'允许编辑
        Else
            MessageBox.show("你不能修改该记录!")
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If
End Select

原已审批的记录已锁定,在窗口全局事件Enter中加入上面代码后,只要是角色为“开票录入”的用户可以更改已锁定的记录数据。我的目的是如果已审批锁定的行任何用户不能修改,除非取消锁定。请老师指教一下。谢谢!

--  作者:有点色
--  发布时间:2017/6/16 18:33:00
--  
Dim ctl As WinForm.Control = e.Sender
Select Case ctl.BindingField
    Case "增值税发票开票登记.合同编号","增值税发票开票登记.申请日期","增值税发票开票登记.外经证开票日期"
        If User.IsRole("开票录入") Then
            ctl.ReadOnly = BooleanEnum.False \'允许编辑
            Tables("增值税发票开票登记").Current("合同编号").locked = False
        Else
            MessageBox.show("你不能修改该记录!")
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If
End Select
 
你在leave事件,记得重新locked一下。

--  作者:沪上游客
--  发布时间:2017/6/17 13:48:00
--  
谢谢!
你在leave事件,记得重新locked一下。
这个代码应该怎么写?
谢谢!我做了半天没做出来,我是菜鸟啊
是不是每一列都要写代码?
[此贴子已经被作者于2017/6/17 13:53:15编辑过]

--  作者:有点蓝
--  发布时间:2017/6/17 15:08:00
--  
leave事件

Tables("增值税发票开票登记").Current("合同编号").locked = true

--  作者:沪上游客
--  发布时间:2017/6/17 17:20:00
--  
谢谢!已解决。
Dim ctl As WinForm.Control = e.Sender
Select Case ctl.BindingField
    Case "增值税发票开票登记.合同编号","增值税发票开票登记.申请日期","增值税发票开票登记.外经证开票日期"
        If User.IsRole("开票录入") Then
            If Tables("增值税发票开票登记").Current("审批") = False
                ctl.ReadOnly = BooleanEnum.False \'允许编辑
            Else
                MessageBox.show("你不能修改该记录!")
                ctl.ReadOnly = BooleanEnum.True \'禁止编辑
            End If
        End If
End Select

请帮我再看一下,总觉得少了点什么?谢谢!

--  作者:有点蓝
--  发布时间:2017/6/17 17:22:00
--  
请用2楼代码