以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论] 这两个代码有什么区别?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2511)

--  作者:wcs
--  发布时间:2009/4/19 22:41:00
--  [讨论] 这两个代码有什么区别?

这是帮助中的一个例子,跨表计算的:
If
e.DataCol.Name = "产品名称" Then \'如果内容发生变动的是产品列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是产品列的内容为空
        e.DataRow("单价") = Nothing
\'那么清空此行单价列的内容
   
Else
        Dim dr As DataRow\'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr = DataTables("产品").Find("[产品名称] = \'" & e.NewValue & "\'")

        If
dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.DataRow("单价") = dr("单价")

        End
If
    End
If
End
If

我在想,将第二行和第六行的 e.NewValue  换成 e.datarow.(e.datacol)

这样可以运行吗,有什么区别吗?

我记得这个是可以运行的,因为帮助中有类似的例子。

[此贴子已经被作者于2009-4-19 22:56:39编辑过]

--  作者:八婺
--  发布时间:2009/4/19 23:03:00
--  
应该e.datarow("列名称")来代替吧。
[此贴子已经被作者于2009-4-19 23:03:55编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/4/19 23:03:00
--  
如果在Datacolchanged事件中,是一样的。
如果在DatacolChanging事件中,e.NewValue表示即将写入的值,e.DataRow("列名")表示现在的值。
--  作者:wcs
--  发布时间:2009/4/19 23:17:00
--  

哦,有一点点区别!

我正在认真地看帮助,理解它们的意义。

每一次看都有不同的感觉!

这一次,理解了表对象如:col、row、table 、datatable等等 与 代码中的对象、计算返回结果的对象、我需要的结果对象类型 相匹配方面的东西。

老大确实太不易了!

佩服!

[此贴子已经被作者于2009-4-19 23:17:43编辑过]