VB6中从数据库中取出栏位值进行操作,若栏位值为Null,则必须小心处理,否则极易导致程序出错退出。

通常我们从recordset中取出栏位值采用Fields方法,加上栏位名称,如

rsMoney.Fields("SecondPlate")

以上Fields方法返回的是Variant类型,Variant类型允许为Null,但我们通常将栏位值当做string或int类型来使用,如赋值、比较,就会出错!

1,Null赋值操作

如以下代码:

1)        Dim ss As String

2)        Dim aa As Variant

3)        ss = "/~2018-12-10 13:40:33,45.50,45.50"

4)        aa = Null '不会出错

5)        ss = IIf(IsNull(aa), "", aa)  '不会出错

6)        ss = aa '出错

7)        ss = aa & ""  '不会出错

ss为字符串类型,aa为Variant类型,

  •  Variant类型变量可以赋值为Null,所以第4行不会出错
  •  第5行在将Null赋值给字符串变量前,先用isNull函数判断是否为Null,用IIF函数将Null转换为空字符串再赋值给ss,所以不会出错
  •  第6行直接将Null赋值给字符串变量,所以出错
  •  第7行在将Null赋值给字符串变量前,先与空字符串连接,右侧运算结果为空字符串,所以不会出错

2,Null比较操作

Dim ss As String

Dim aa As Variant

ss = ""

aa = Null '不会出错

If ss = aa Then

Form1.Text1.Text = "1!"

Else

If ss > aa Then

Form1.Text1.Text = "2!"

Else

If ss < aa Then

Form1.Text1.Text = "3!"

Else

Form1.Text1.Text = "4!"

End If

End If

End If

以上代码运行结果为4!

因为与Null进行比较,无论是大于还是小于还是等于,其结果全部为False。

3,数据库栏位值可能为Null时,代码操作注意事项

综上,建议如下:

  • 在VB中取出记录栏位值在进行赋值前,应进行判断或转换。建议赋值前与空字符串进行连接操作,比较简明。即:

Dim ss As String

Ss = rsMoney.Fields("SecondPlate") & ""

  • 记录栏位值可能为Null时,不能等同于空字符串进行比较操作。可能为Null的栏位值,在进行比较操作前应先进行明确的判断或转换,以免程序产生bug。

最新文章

  1. 两种open()函数
  2. paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。
  3. D触发器
  4. nginx根据域名做http,https分发
  5. 浅析MySQL中exists与in的使用 (写的非常好)
  6. c#使用spy进行模拟操作
  7. css text-indent:999em
  8. PDO(PHP Data Object)数据访问抽象层
  9. Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
  10. .Net利用Newtonsoft进行解析Json的快捷方法
  11. C#语法相比其它语言比较独特的地方
  12. 小tips:JS之for in、Object.keys()和Object.getOwnPropertyNames()的区别
  13. day4——无重复字符的最长子串
  14. centos7+cobbler+kickstart
  15. 洛谷P4307 球队收益
  16. JS创建对象之动态原型模式
  17. JQuery miniui使用小记
  18. xhprof 安装详解
  19. long数值 转换为时间
  20. C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试

热门文章

  1. BAPI 关闭和删除PR
  2. (16)ServletContext详解
  3. XMU 1071 圣斗士黄金十二宫(七)银河星爆 【计算几何】
  4. (转载)synchronized代码块
  5. Linux MTD下获取Nand flash各个参数的过程的详细解析【转】
  6. YTU 2975: 我的编号
  7. Django Cache缓存系统介绍及Memcached使用
  8. appium学习【三】:截图时,图片命令中包含当前的函数名,以区分错误是在哪个函数报的
  9. 《The Unreasonable Effectiveness of Recurrent Neural Networks》阅读笔记
  10. 3winsock编程1