编辑前进行复杂条件判断

Foxtable的权限管理不仅可以基于用户名或用户分组,还可以进行更复杂的条件判断。
假定订单表有一个业务员列,用于登记负责每个订单的业务员,另外有一个结账列,逻辑型,用于记录此订单是否已经结账。

现在要求:

1、每个业务员只能编辑自己负责的订单,对于其他业务员负责的订单,则只能查看不能编辑。
2、张经理可以编辑任何业务员的订单。
3、对于经结账的记录,普通业务员不能编辑。
4、对于未超过10天的订单,即使已经结账,张经理还是可以编辑。

设计步骤:

1、将订单表的DataRowAdding事件设置为:

e.DataRow("业务员") = User.name

这样新增订单的时候,会自动在业务员列填入当前登录用户名。

2、最后将订单表的PrepareEdit事件设置为:

If User.Name = "张经理" Then '如果是张经理
   
If e.Row("结账") = True Then '此订单已经结账
       
Dim tv As Date = e.Row("日期")
        Dim
tp As TimeSpan = Date.Today
- tv
        If
tp.TotalDays >= 10 Then
'如果订单已经超过10天
            e.Cancel =
True '则取消编辑
       
End If
   
End If
ElseIf
e.Row("业务员") <> User.Name Then '如果是其他用户,且业务员和登录用户名不同
    e.Cancel =
True '则取消编辑
End
If


本页地址:http://www.foxtable.com/webhelp/topics/2254.htm