我有一个这样的记录集:
Dim rs as Recordset
Set rs as New Recordset
'... a lot of coding ...
if Err.Number <> 0 Then ' oops, something gone wrong!
If rs.State <> adStateClosed Then rs.Close
Set rs = Nothing
end if
' I want to evaluate if rs is Nothing, or Null
if rs is Nothing then
' this doesn't throw errors, and works well :D
end if
if rs is Null then
' this throws an error of "types not compatible"
end if
if rs = Null then
' this throws an error of "types not compatible"
end if
if isNull(rs) then
' never enters here, isNull(rs) evaluates to False
end if
我发现在VB6中我很少使用“Null”(我用它来评估空记录集模式名称),但我对图像,adodb.connections或记录集之类的东西使用“Nothing”。对于字符串我有vbNullString。我读到它是一个指向空字符串的指针。
“Null”是“未知变量值”而“Nothing”是真正的空值吗?
答案 0 :(得分:16)
Null是Variant的特定子类型。它不存在于Variant类型之外,并且创建它以允许Variant为数据库空值建模。
没有什么是Object变量的值。它基本上与空指针相同,即没有对象。
以下引发错误,因为&#34; Is&#34;只能与对象变量一起使用:
if rs is Null then
' this throws an error of "types not compatible"
end if
以下引发错误,因为Object变量永远不能为空:
if rs = Null then
' this throws an error of "types not compatible"
end if
以下计算False,因为IsNull()采用Variant参数。
if isNull(rs) then
' never enters here, isNull(rs) evaluates to False
end if
相当于:
VarType(rs) = vbNull
答案 1 :(得分:0)
下表说明了如何使用VBScript关键字。
关键字
关键字描述
空
Empty关键字用于指示未初始化的变量值。这与Null不同。
假 False关键字的值等于0.
没有 VBScript中的Nothing关键字用于取消对象变量与任何实际对象的关联。使用Set语句将Nothing分配给对象变量。例如:
设置MyObject = Nothing
多个对象变量可以引用相同的实际对象。当Nothing分配给对象变量时,该变量不再引用任何实际对象。当多个对象变量引用同一个对象时,与变量引用的对象关联的内存和系统资源只有在所有这些对象都设置为Nothing后才会释放,要么显式使用Set,要么在最后一个对象变量设置为没有什么超出范围。
空 Null关键字用于指示变量不包含有效数据。这与Empty不同。
真 True关键字的值等于-1。
答案 2 :(得分:-1)
您可以尝试以下操作:
a = "SELECT SBio.biosrno,YearlyCharges.adnum,Name,sName
FROM SBio RIGHT JOIN YearlyCharges ON SBio.biosrno=YearlyCharges.adnum
WHERE (SBio.biosrno IS NULL );"