给用户授予输入值许可范围
我们之前的例子,都是在编辑之前,执行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
我们在介绍ValidateEdit和DataColChanging事件的时候,也提供了很多验证输入值的例子,大家可以复习一下。
本页地址:http://www.foxtable.com/webhelp/topics/2259.htm