Foxtable(狐表)用户栏目专家坐堂 → [求助]初学者求教两段代码疑问


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

主题:[求助]初学者求教两段代码疑问

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
[求助]初学者求教两段代码疑问  发帖心情 Post By:2011/1/11 16:39:00 [只看该作者]

各位老师:为什么我写了两段代码,表面看执行效果一致,但只有代码一好用呢?写了内容就记录,清除内容记录消失,而代码二就不行呢?

初学者求教。

 

代码一(好用)如果部门主管填写审批意见,就记录审批人和审批时间,如果没有内容,审批记录为空

----------------------------------------

If e.DataCol.Name =  "审批内容_部门主管意见" Then
    If e.DataRow.IsNull("审批内容_部门主管意见") Then
        e.DataRow("审批内容_部门主管审批记录") = Nothing
    Else
       
        e.DataRow("审批内容_部门主管审批记录") = user.name & "\" & Date.now
    End If
End If

‘---------------------------- 

代码二(不好用)如果部门主管填写过审批意见就记录审批人和审批时间,否则记录就为空

If e.DataCol.Name = "审批内容_部门主管意见" Then
If e.DataRow("审批内容_部门主管意见") IsNot Nothing Then
e.DataRow("审批内容_部门主管审批记录") = user.name & "\" & Date.now
Else
e.DataRow("审批内容_部门主管审批记录") = Nothing
End If
End If


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/1/11 16:59:00 [只看该作者]

以下是引用ddlzq在2011-1-11 16:39:00的发言:

各位老师:为什么我写了两段代码,表面看执行效果一致,但只有代码一好用呢?写了内容就记录,清除内容记录消失,而代码二就不行呢?

初学者求教。

 

代码一(好用)如果部门主管填写审批意见,就记录审批人和审批时间,如果没有内容,审批记录为空

----------------------------------------

If e.DataCol.Name =  "审批内容_部门主管意见" Then
    If e.DataRow.IsNull("审批内容_部门主管意见") Then    这段代码是如果这个是空的话
        e.DataRow("审批内容_部门主管审批记录") = Nothing     这个为空值
    Else  否则
       
        e.DataRow("审批内容_部门主管审批记录") = user.name & "\" & Date.now   填写次内容
    End If
End If

‘---------------------------- 

代码二(不好用)如果部门主管填写过审批意见就记录审批人和审批时间,否则记录就为空

If e.DataCol.Name = "审批内容_部门主管意见" Then  
If e.DataRow("审批内容_部门主管意见") IsNot Nothing Then    如果这个内容不是空值的话
e.DataRow("审批内容_部门主管审批记录") = user.name & "\" & Date.now    就填写这个内容
Else   否则
e.DataRow("审批内容_部门主管审批记录") = Nothing    这个为空值.
End If
End If

     根据这个你自己修改代码顺序.关键是执行代码的顺序,先执行什么再执行什么.


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/1/11 17:03:00 [只看该作者]

If e.NewValue IsNot Nothing Then

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/1/11 19:55:00 [只看该作者]

感谢楼上两位老师指导,我学习下...


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


加好友 发短信
等级:婴狐 帖子:39 积分:302 威望:0 精华:0 注册:2011/1/9 17:22:00
  发帖心情 Post By:2011/1/11 20:16:00 [只看该作者]

好好琢磨一下Null的含意,Null严格来说是表示内容不确定的意思,是一种特殊意义上的空值,因此判断单元格是否有内容应该用:isnull(),而不能用is nothing 或isnot nothing,确实有点不好理解,只能记住规则啦。

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/1/11 22:21:00 [只看该作者]

谢谢楼上老师指点,待我好好测试研究下。

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


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

切不可用 e.DataRow("列名") Is Nothing 来判断某列的值是否为空,因为对于数值列,如果值为空,e.DataRow("列名")返回的是0,如果是日期列,则返回#01/01/0001#,显然这都不是空值。

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


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/1/12 8:55:00 [只看该作者]

以下是引用狐狸爸爸在2011-1-12 8:49:00的发言:
切不可用 e.DataRow("列名") Is Nothing 来判断某列的值是否为空,因为对于数值列,如果值为空,e.DataRow("列名")返回的是0,如果是日期列,则返回#01/01/0001#,显然这都不是空值。

哦,原来如此啊...看来真要好好学习了,不然抄出来的代码总会不听话,呵呵,谢谢狐爸的一语点题。


 回到顶部