给用户授予输入值许可范围

我们之前的例子,都是在编辑之前,执行PrepareEdit事件,判断用户是否有编辑此列、此行或此单元格的权限。
权限管理不会总是如此简单,有时不需要在编辑前进行判断,而是在编辑后,判断用户输入的值是否超出授权范围。
例如给订单打折,不同等级的用户,不同的订购数量,能打折的程度是不同的。
此时我们不能使用PrepareEdit事件,因为这个是在编辑前执行,要在编辑后判断输入值是否超出授权范围,通常用ValidateEdit或者DataColChanging事件。

假定订单表中有个折扣列,普通业务员给出的折扣不能超过5%,张经理则不能超过10%,对于订购数量达到1000的订单,张经理有权给出15%的折扣。
为此可将此表的
ValidateEdit代码设置为:

If e.Col.Name = "折扣" Then '如果修改的是折扣列
    Dim v As Double = e.Text '取得新输入的折扣
   
If User.Name = "张经理" Then '如果用户是张经理
       
If v > 0.15 Then '且折扣大于0.15
            e.Cancel =
True '取消此次输入
        ElseIf
v> 0.1 AndAlso e.Row("数量") < 1000 Then
'如果折扣大于0.1,但数量少于1000
            e.Cancel =
True '取消此次输入
       
End If
   
ElseIf v > 0.05 Then '如果是普通用户,且折扣大于0.05
        e.Cancel =
True '取消此次输入
   
End If
   
If e.Cancel Then '如果本次输入被取消,则提示用户原因
        Messagebox.show(
"你输入的折扣超出授权范围!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
   
End If

End
If

我们在介绍ValidateEditDataColChanging事件的时候,也提供了很多验证输入值的例子,大家可以复习一下。


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