以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]DataColChanged和DataColChanging  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=80905)

--  作者:poiokm26
--  发布时间:2016/2/7 21:29:00
--  [求助]DataColChanged和DataColChanging
正学到事件编程部份,自己试了几个代码.发现DataColChanged的代码放到DataColChanging中运行得到的效果是相同的.
希望能介绍几个例子或贴子让我更多了解一下.
另外:大家新年快乐!

--  作者:Hyphen
--  发布时间:2016/2/12 9:03:00
--  
知道DataColChanging是在数据写入单元格之前触发,而DataColChanged是在数据写入单元格之后触发的就行。

一般DataColChanging多用来进行数据验证,可以通过e.Cancel = True取消数据写入

--  作者:大红袍
--  发布时间:2016/2/13 23:29:00
--  
 DataColChanging事件的时候,修改的值并没有写入到表,只能用如 e.NewValue 获取,不能用如 e.DataRow("列名") 取得值。
--  作者:poiokm26
--  发布时间:2016/2/14 13:19:00
--  

If e.DataCol.Name = "金额" Then
    If
e.NewValue = 0 Then
        e.NewValue =
Nothing
    End
if
End
If


这段代码如果在DataColChanged运行就不起作用,DataColChanging运行正常


但是在DataColChanging中改动一下

If e.DataCol.Name = "金额" Then

    If e.dataRow("金额") = 0 Then
        
e.dataRow("金额") = Nothing
    End
 if
End
 If

这时就运行的起来就会死机退去.个人理解为: e.NewValue 跟 e.dataRow("金额") = Nothing 发生冲突.
但这段改动过的代码放在DataColChanged中运行就起作用了.

老师还有没有补充..?





--  作者:大红袍
--  发布时间:2016/2/15 9:19:00
--  

1、在ed事件里,不能再修改newvalue的值了。

 

2、在ing事件里,尽量不要用 e.DataRow("当前触发的列名")