再谈空值
我们已经知道,空值是用Nothing表示的。 例如需要删除订单表某行客户列的内容,可以:
Tables(
"订单").Rows(1)("客户") = Nothing或
DataTables("订单").DataRows(1)("客户") = Nothing
如果要判断某一列的内容为空,可以:
If Tables(
"订单").Rows(1).IsNull("客户") Then或
If DataTables("订单").DataRows(1).IsNull("客户")
Then
'代码
End If
你也许会感到奇怪,为什么要用IsNull判断,而不能用下面的方法判断呢:
If Tables("订单").Rows(1)("客户")
Is Nothing Then
'代码
End If
这是因为即使某列的值为空,其返回的值也不会是Nothing。
在某列内容为空的时候,会根据不同的列类型,返回不同的值,规则如下:
字符列:""
数值列:0
逻辑列:False
日期列:#0001-01-01 0:00:00#
很多方法,例如Compute、Find、DeleteFor、Select,都可以使用表达式来作为执行条件,那么表达式中如何针对空值和非空值来设置条件呢?
我们还是举例说明,例如删除表A中第一列内容为空的行:
DataTables(
"表A").DeleteFor("第一列 Is Null")再例如,计算订购数量大于500,且发货日期为空的行数:
Dim
Count As Integer如果要表示非空,可以加上Not关键词,例如要得到订单表中折扣不为空的行数:
Dim
Val As Integer