Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
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

2楼
blackzhu 发表于: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

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

3楼
czy 发表于:2011/1/11 17:03:00
If e.NewValue IsNot Nothing Then
4楼
ddlzq 发表于:2011/1/11 19:55:00

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

5楼
lmk 发表于:2011/1/11 20:16:00
好好琢磨一下Null的含意,Null严格来说是表示内容不确定的意思,是一种特殊意义上的空值,因此判断单元格是否有内容应该用:isnull(),而不能用is nothing 或isnot nothing,确实有点不好理解,只能记住规则啦。
6楼
ddlzq 发表于:2011/1/11 22:21:00
谢谢楼上老师指点,待我好好测试研究下。
7楼
狐狸爸爸 发表于:2011/1/12 8:49:00
切不可用 e.DataRow("列名") Is Nothing 来判断某列的值是否为空,因为对于数值列,如果值为空,e.DataRow("列名")返回的是0,如果是日期列,则返回#01/01/0001#,显然这都不是空值。
8楼
ddlzq 发表于:2011/1/12 8:55:00
以下是引用狐狸爸爸在2011-1-12 8:49:00的发言:
切不可用 e.DataRow("列名") Is Nothing 来判断某列的值是否为空,因为对于数值列,如果值为空,e.DataRow("列名")返回的是0,如果是日期列,则返回#01/01/0001#,显然这都不是空值。

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

共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.