BeforeSaveDataRow

在保存某一数据行之前执行,可以在此对数据进行最终的验证。

e参数属性:
 
DataTable: 返回正在保存的数据表。
DataRow:   返回正在保存的数据行。
Cancel:   逻辑型,设为True,取消正在进行的保存。
 
我们已经接触了两种和数据验证有关的事件,分别是ValidateEdit和DataColChanging,现在是第三个。

示例
 
例如,在输入订单的时候,要求订购数量不超过1000的订单,其折扣不能超过0.15,可以在BeforeSaveDataRow事件中设置如下代码:

If e.DataRow("数量") < 1000 Andalso e.DataRow("折扣") > 0.15 Then '判断是否不符合验证要求
    MessageBox.Show(
"数量低于1000的订单,折扣不能超过0.15","存盘失败",MessageBoxButtons.OK,MessageBoxIcon.Exclamation) '提示用户
   
Dim Index As Integer
    Index =
Tables("订单").FindRow(e.DataRow) '找出此行在销售数据Table中的位置
   
If Index > -1 Then '如果找到此行
   
    Tables("订单").Position = Index '将焦点定位到此行
   
End If
    Maintable
= Tables("订单") '选择销售数据表作为主表。
    e.Cancel =
True '取消存盘
End
If

上述代码在发现不符合验证规则的行后,不仅提示用户,而且将焦点移到不符合规则的行。
如果在BeforeSaveDataRow事件取消了存盘,请给用户明确的提示,以免给用户带来疑惑:怎么就存不了盘呢?
 
三种数据验证方式各有侧重,ValidateEdit主要用于输入验证,DataColChanging可对任何原因导致的数据变动进行验证,BeforeSaveDataRow在最后进行把关,而且侧重于列与列之间的逻辑验证。


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