Foxtable(狐表)用户栏目专家坐堂 → [讨论] 这两个代码有什么区别?


  共有18991人关注过本帖树形打印复制链接

主题:[讨论] 这两个代码有什么区别?

帅哥哟,离线,有人找我吗?
wcs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
[讨论] 这两个代码有什么区别?  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
八婺
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:252 积分:1355 威望:0 精华:0 注册:2009/4/5 13:06:00
  发帖心情 Post By:2009/4/19 23:03:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/4/19 23:03:00 [只看该作者]

如果在Datacolchanged事件中,是一样的。
如果在DatacolChanging事件中,e.NewValue表示即将写入的值,e.DataRow("列名")表示现在的值。

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/4/19 23:17:00 [只看该作者]

哦,有一点点区别!

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

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

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

老大确实太不易了!

佩服!

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

 回到顶部