以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  权限设置逻辑关系  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=163322)

--  作者:朱女士
--  发布时间:2021/4/23 11:26:00
--  权限设置逻辑关系

老师您好!

    我有一个权限设置,逻辑关系比较复杂,我弄了一个上午也没弄出来,请帮忙!谢谢!我的逻辑是,有三个逻辑列:校对、开票否、开票完结,有用户分组三个:综合主管、生产主管、订单业务员。校对列的权限是生产主管的,开票否和开票完结两列同时是综合主管的。问题是一旦勾选了校对和开票否和开票完结后,编号列是所有用户都能打开,如果到货日期和发货日期是空白,订单业务员和生产主管可以编辑。我的代码没有达到以上意图。请指教!

Select Case e.Col.name
    Case "校对"
        If e.Row("校对") = True
            If User.Group <>"生产主管"  Then
               
                If e.Col.name="编号" Then
                   
                    E.cancel=False
                End If
                If User.Group ="生产主管" Or User.Group ="订单业务员" Then
                    If e.Row.isnull("到货日期") Or e.Row.isnull("发货日期")
                       
                        e.Cancel = False
                    End If
                End If
            End If
        End If
       

       Case "开票否"
    If User.Group="综合主管"  Then
    e.Cancel =False
    ElseIf User.Group<>"综合主管"  Then
    e.Cancel =True
    End If
    If e.Col.name="编号" Then
    E.cancel=False
    Else If e.Row.isnull("到货日期") Or e.Row.isnull("发货日期") Then
    If User.Group ="生产主管" Or User.Group ="订单业务员" Then
    e.Cancel = False
    End If
    End If
    
    Case "开票完结"
    If User.Group="综合主管"  Then
    e.Cancel =False
    ElseIf User.Group<>"综合主管"  Then
    e.Cancel =True
    End If
    
    If e.Col.name="编号" Then
    E.cancel=False
    Else If e.Row.isnull("到货日期") Or e.Row.isnull("发货日期") Then
    If User.Group ="生产主管" Or User.Group ="订单业务员" Then
    e.Cancel = False
    End If
    End If
    End Select


--  作者:有点蓝
--  发布时间:2021/4/23 11:47:00
--  
Select Case e.Col.name
    Case "校对"
        e.cancel=(User.Group <>"生产主管")
    Case "开piao否","开piao完结"
        e.cancel=(User.Group <>"综合主管")
    Case "编号"
        If e.Row("校对") = False OrElse  e.Row("开piao否") = False OrElse  e.Row("开piao完结") = False Then
            e.cancel=True
        End If
    Case "到货日期","发货日期"
        If User.Group <>"生产主管" AndAlso User.Group <>"订单业务员" OrElse e.Row.isnull(e.Col.name)=false
            e.cancel=True
        End If
End Select

--  作者:朱女士
--  发布时间:2021/4/23 15:40:00
--  

老师您好!

上述代码基本满足功能,但是我想“校对”列勾选后的行,锁住所在的行的所有列,不允许任何人编辑,然后根据条件限定哪列能编辑。我的代码全部列出所有列名,我没找到好办法。谢谢!

Select Case user.group
    Case "总经理","副总经理","财务主管"
        e.Cancel = True
End Select

If e.Col.name="校对" Then
    If user.group <> "生产主管" Then
        e.cancel=True
    End If
End If
If  e.Row("校对")=True
e.cancel=e.Row("净重")
e.cancel=e.Row("含税金额")
e.cancel=e.Row("不开票金额")
e.cancel=e.Row("订单数量")
e.cancel=e.Row("不开票金额")
e.cancel=e.Row("自产重量")
e.cancel=e.Row("自产含税额")
e.cancel=e.Row("自产不开票额")
e.cancel=e.Row("外协重量")

.....
End If
    Select Case e.Col.name
           Case "开票否","开票完结"
            e.cancel=(User.Group <>"综合主管")
        Case "到货日期","发货日期"
            If User.Group ="生产主管" AndAlso User.Group ="订单业务员" OrElse e.Row.isnull(e.Col.name)=True
                e.cancel=False
             End If
         Case "校对日期"
             If user.group="生产主管" Then
               
                 e.Row("校对日期") = Date.Today()
             End If
     End Select
 If e.Row("校对")=False Then
     e.Row("校对日期")=Nothing
 End If


--  作者:有点蓝
--  发布时间:2021/4/23 15:55:00
--  
Select Case e.Col.name
    Case "校对"
        e.cancel=(User.Group <>"生产主管")
    Case "开piao否","开piao完结"
        e.cancel=(User.Group <>"综合主管")
    Case "编号"
        If e.Row("校对") = False OrElse  e.Row("开piao否") = False OrElse  e.Row("开piao完结") = False Then
            e.cancel=True
        End If
    Case "到货日期","发货日期"
        If User.Group <>"生产主管" AndAlso User.Group <>"订单业务员" OrElse e.Row.isnull(e.Col.name)=false
            e.cancel=True
        End If
case else 
if e.Row("校对") = False then
e.cancel=True
end if
End Select