以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]内部用户转外部用户的权限管理问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65166)

--  作者:viking
--  发布时间:2015/3/10 15:45:00
--  [求助]内部用户转外部用户的权限管理问题?

项目为自带用户及权限管理,现在按照帮助自己编写了用户及权限管理部分,请大神给看下,下面的代码改的对不对?

 

现有:

Dim s As String = Tables("利润单").Cols("订单状态").ComboList
If e.IsFocusCell
    If e.Col.Name  = "订单状态" AndAlso User.Group = "导游组"
        Tables("利润单").Cols("订单状态").ComboList = "2-财务审核"
    Else
        Tables("利润单").Cols("订单状态").ComboList = s
    End If
End If


Dim f As String = Tables("利润单").Cols("订单状态").ComboList
If e.IsFocusCell
    If e.Col.Name  = "订单状态" AndAlso User.Group= "办公室"
        Tables("利润单").Cols("订单状态").ComboList = "3-业务审核"
    Else
        Tables("利润单").Cols("订单状态").ComboList = f
    End If
End If


If e.Col.Name = "订单状态"  Then  \'如果修改的是订单状态列
    If e.Row("订单状态") = "2-财务审核"  Then  \'如果内容是"2-财务审核"
        If User.Group <>  "办公室"  Then  \'且用户不是办公室
            e.Cancel = True  \'那么禁止编辑
        End  If
    End  If
End  If

If e.Col.Name = "订单状态"  Then  \'如果修改的是订单状态列
    If e.Row("订单状态") = "3-业务审核"  Then  \'如果内容是"3-财务审核"
        If User.Group <>  "经理组"  Then  \'且用户不是经理组
            e.Cancel = True  \'那么禁止编辑
        End  If
    End  If
End  If

If e.Row("订单状态") = "1-新增订单"  Then  \'如果内容是"1-新增订单"
    If e.Row("业务负责") <> User.Name Then  \'且用户不是业务负责人
        e.Cancel =  True  \'那么禁止编辑
    End  If
End  If


If e.Table.Current IsNot Nothing Then
    If Forms("利润订单窗口").Opened Then
        Dim a As WinForm.Button = Forms("利润订单窗口").Controls("新增利润明细按键")
        Dim b As WinForm.Button = Forms("利润订单窗口").Controls("删除利润单按键")
        Dim d As WinForm.Button = Forms("利润订单窗口").Controls("删除利润明细按键")
        Select Case e.Table.Current("订单状态")
            Case  "2-财务审核","3-业务审核","4-订单完成"
                a.Enabled = False
                b.Enabled = False
                d.Enabled = False
            Case Else
                a.Enabled = True
                b.Enabled = True
                d.Enabled = True
        End Select
    End If
End If


If e.Table.Current IsNot Nothing Then  \'如果当前表中没有对应的内容,那么执行下边
    If Forms("利润订单窗口").Opened      \'如果窗口打开
        If user.Name = e.Table.Current("业务负责") Then
            Forms("利润订单窗口").Controls("新增利润明细按键").Enabled = True
        Else
            Forms("利润订单窗口").Controls("新增利润明细按键").Enabled = False
        End If
    End If
End If

 

If e.Table.Current IsNot Nothing Then  \'如果当前表中没有对应的内容,那么执行下边
    If Forms("利润订单窗口").Opened      \'如果窗口打开
        Dim flag As Boolean = False
        For Each r As Row In Tables("利润单.利润明细单").Rows
            If r.IsNull("账单编号") = False  Then
                flag = True
                Exit For
            End If
        Next
        If flag = False AndAlso user.Name = e.Table.Current("业务负责") Then
            Forms("利润订单窗口").Controls("删除利润单按键").Enabled = True
        Else
            Forms("利润订单窗口").Controls("删除利润单按键").Enabled = False
        End If
    End If
End If

 

 

改为:

 

 

 

 

 

Dim s As String = Tables("利润单").Cols("订单状态").ComboList
If e.IsFocusCell
    If e.Col.Name  = "订单状态" AndAlso _UserGroup = "导游组"
        Tables("利润单").Cols("订单状态").ComboList = "2-财务审核"
    Else
        Tables("利润单").Cols("订单状态").ComboList = s
    End If
End If


Dim f As String = Tables("利润单").Cols("订单状态").ComboList
If e.IsFocusCell
    If e.Col.Name  = "订单状态" AndAlso _UserGroup = "办公室"
        Tables("利润单").Cols("订单状态").ComboList = "3-业务审核"
    Else
        Tables("利润单").Cols("订单状态").ComboList = f
    End If
End If


If e.Col.Name = "订单状态"  Then  \'如果修改的是订单状态列
    If e.Row("订单状态") = "2-财务审核"  Then  \'如果内容是"2-财务审核"
        If _UserGroup <>  "办公室"  Then  \'且用户不是办公室
            e.Cancel = True  \'那么禁止编辑
        End  If
    End  If
End  If

If e.Col.Name = "订单状态"  Then  \'如果修改的是订单状态列
    If e.Row("订单状态") = "3-业务审核"  Then  \'如果内容是"3-财务审核"
        If _UserGroup <>  "经理组"  Then  \'且用户不是经理组
            e.Cancel = True  \'那么禁止编辑
        End  If
    End  If
End  If

If e.Row("订单状态") = "1-新增订单"  Then  \'如果内容是"1-新增订单"
    If e.Row("业务负责") <> _UserName Then  \'且用户不是业务负责人
        e.Cancel =  True  \'那么禁止编辑
    End  If
End  If


If e.Table.Current IsNot Nothing Then
    If Forms("利润订单窗口").Opened Then
        Dim a As WinForm.Button = Forms("利润订单窗口").Controls("新增利润明细按键")
        Dim b As WinForm.Button = Forms("利润订单窗口").Controls("删除利润单按键")
        Dim d As WinForm.Button = Forms("利润订单窗口").Controls("删除利润明细按键")
        Select Case e.Table.Current("订单状态")
            Case  "2-财务审核","3-业务审核","4-订单完成"
                a.Enabled = False
                b.Enabled = False
                d.Enabled = False
            Case Else
                a.Enabled = True
                b.Enabled = True
                d.Enabled = True
        End Select
    End If
End If


If e.Table.Current IsNot Nothing Then  \'如果当前表中没有对应的内容,那么执行下边
    If Forms("利润订单窗口").Opened      \'如果窗口打开
        If _userName = e.Table.Current("业务负责") Then
            Forms("利润订单窗口").Controls("新增利润明细按键").Enabled = True
        Else
            Forms("利润订单窗口").Controls("新增利润明细按键").Enabled = False
        End If
    End If
End If

 

If e.Table.Current IsNot Nothing Then  \'如果当前表中没有对应的内容,那么执行下边
    If Forms("利润订单窗口").Opened      \'如果窗口打开
        Dim flag As Boolean = False
        For Each r As Row In Tables("利润单.利润明细单").Rows
            If r.IsNull("账单编号") = False  Then
                flag = True
                Exit For
            End If
        Next
        If flag = False AndAlso _userName = e.Table.Current("业务负责") Then
            Forms("利润订单窗口").Controls("删除利润单按键").Enabled = True
        Else
            Forms("利润订单窗口").Controls("删除利润单按键").Enabled = False
        End If
    End If
End If

 

 

给帮忙给看下,这个改法对不对,能不能起作用?谢谢!

还有个问题,这个权限是不是还受默认用户影响,默认用户应该怎么设置?

[此贴子已经被作者于2015/3/10 15:47:07编辑过]

--  作者:有点甜
--  发布时间:2015/3/10 15:47:00
--  
 就是这样改,有什么问题?
--  作者:viking
--  发布时间:2015/3/10 16:00:00
--  
感觉好像没有起作用,我感觉是不是和默认账户有关系,我设置的默认账户还在直接控制权限!
--  作者:lsy
--  发布时间:2015/3/10 16:03:00
--  
代码重复的太多了,看起来都晕。
先合并重复的代码,代码少了,理清逻辑关系就容易些。

--  作者:有点甜
--  发布时间:2015/3/10 16:03:00
--  

不可能,弹出看一下

 

Msgbox(_UserGroup)

Msgbox(_UserName)