Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
如有表A,修改第二列某单元格数据时,如大于原值,提示,并返回原值。如何实现?请教各位了
DataColChanging
某一列的内容发生变化前执行,此时列的内容还是更改前的值。
利用此事件,我们可以在某列内容发生变化之前进行拦截判断,如果不符合特定的条件,则取消此次变化,或者重新指定一个值。
e参数属性:
DataTable: 返回发生数据更改的数据表。
DataRow: 返回发生数据更改的数据行。
DataCol: 返回数据更改的数据列。
NewValue: Object类型,表示新的值
Cancel: 逻辑(Boolean)类型,设为True取消更改。
示例
例如在订单表中,要求折扣列的值不能超过0.15,可以在DataColChanging时间中设置如下代码:
If e.DataCol.Name = "折扣" Then '如果是折扣列的内容发生变化。
If e.NewValue > 0.15 Then '如果新值大于0.15。
e.Cancel = True '取消变动。
End If
End If
上面的代码在折扣超出0.15后,取消此次变动;如果希望在折扣超出0.15后,自动改为0.15,代码如下:
If e.DataCol.Name = "折扣" Then '如果是折扣列的内容发生变化。
If e.NewValue > 0.15 Then '如果输入的内容大于0.15。
e.NewValue = 0.15 '那么改为0.15。
End If
End If
通过更改NewValue参数的值,我们可以实现代码输入,例如:
If
e.DataCol.Name = "产品" Then '如果是产品列的内容发生变化。设置上述代码后,如果你在产品列输入tv,将自动替换为电视机,如果输入tel,自动替换为电话机。
关键是原值如何取得的问题,上面这些我知。新值与原值的比较,如何编写?谢谢帮忙!
如有表A,修改第二列某单元格数据时,如大于原值,提示,并返回原值。如何实现?请教各位了
关键是原值如何取得的问题,上面这些我知。新值与原值的比较,如何编写?谢谢帮忙!
If e.DataCol.Name = "折扣" Then '如果是折扣列的内容发生变化。
If e.NewValue > e.datarow("折扣") Then
e.Cancel = True
End If
End If
新增加一条记录时就会判断DataColChanging中值的变化吗?如新增记录不进行此事件代码?
只能修改一次,成功后,再进行修改,只能根据成功的列值再次输入的值进行判断,可否再次根据原值(也就是初始值)与输入值进行判断呢?如何执行?请教各位了!