VB6程序中NULL注意事项
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。
VB6程序中NULL注意事项的更多相关文章
- 微信小程序中发送模版消息注意事项
在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...
- 小程序中this.setData的使用和注意事项
前言:微信小程序中经常需要用到this.setData({})把变量值渲染到视图层,那到底什么是this.setData,如何使用?需要注意哪些?作为一个初学者,分享一点我的经验,希望大家批评指正. ...
- 微信小程序之ES6与事项助手
由于官方IDE更新到了0.11.112301版本,移除了对Promise的支持,造成事项助手不能正常运行,解决此问题,在项目中引入第三方兼容库Bluebird支持Promise,代码已经整合到项目代码 ...
- 理解性能的奥秘——应用程序中慢,SSMS中快(6)——SQL Server如何编译动态SQL
本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(5)--案例:如何应对参数嗅探 我们抛开参数嗅探的话题,回到了本系列的最 ...
- vc++ 在程序中运行另一个程序的方法
在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,Creat ...
- TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE
TransactionScope事务处理方法介绍及.NET Core中的注意事项 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...
- Android程序中,内嵌ELF可执行文件-- Android开发C语言混合编程总结
前言 都知道的,Android基于Linux系统,然后覆盖了一层由Java虚拟机为核心的壳系统.跟一般常见的Linux+Java系统不同的,是其中有对硬件驱动进行支持,以避开GPL开源协议限制的HAL ...
- 去除富文本中的html标签及vue、react、微信小程序中的过滤器
在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容:然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过 1.富文本去除html标签 去除htm ...
- 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能
在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验 ...
随机推荐
- Python标准库:内置函数complex([real[, imag]])
本函数能够使用參数real + imag*j方式创建一个复数.也能够转换一个字符串的数字为复数:或者转换一个数字为复数.假设第一个參数是字符串,第二个參数不用填写.会解释这个字符串且返回复数.只是,第 ...
- Xcode The identity used to sign the executable is no longer valid. 错误解决
Xcode真机调试时出现问题:Xcode The identity used to sign the executable is no longer valid. Please verify that ...
- Masonry整体动画更新约束
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...
- Servlet单例非安全解析
Servlet容器默认是采用单实例多线程的方式处理多个请求 Servlet容器<Web容器<应用服务器?apache<tomcat<websphere Servlet不是线程安 ...
- Python实现跨文件全局变量的方法
Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件 再次使用 global x 也是无法访问到的,因为在这个py模 ...
- 【转】zip() 函数
描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符 ...
- [App Store Connect帮助]八、维护您的 App(1)App 维护概述
您在 App Store 上发行 App 后,需要执行一些任务来回复顾客反馈并在整个产品周期内维护您的 App.您可以按任何顺序执行这些任务. 监控顾客评论.销售情况和分析 您可以在 App 页面的“ ...
- jQuery笔记之data方法
成品图如下所示: 搭建HTML+CSS结构 <style> /* 给tpl设置为不可见,因为我们不需要用到他,我们只是要克隆他身上的东西,克隆完就把他删掉.就跟渣男一样!!!*/ .tpl ...
- ios手机Safari本地服务连不上
问题: 今天在本地起服务准备测下ios手机端页面,结果发现:页面可以打开,但是登录不上. 用alert定位了下,await fn() 报错被try()catch(){}捕获了... 原因: 该机子不支 ...
- Oracle - RMAN备份 之 incarnation的实验和小结
对于RMAN恢复我一直都不是很明白,因为,老是搞不清楚不完全恢复该怎么进行,今天,通过这个实验即是对不完全恢复的实践,也是希望搞清楚incarnation到底是怎么工作的.很可惜,本人对Oracle的 ...