送分100分:text1.text = rst1.fields("姓名") 时出现无效使用NULL的提示解决办法

送分100分:text1.text = rst1.fields("姓名") 时出现无效使用NULL的提示
VB6+ACCESS2003+ ADO

在程序中有text1.text = rst1.fields("姓名")

当"姓名"字段为空值时text1.text = rst1.fields("姓名")出现无效使用NULL的提示

为什么会出现这个提示,应该如何避免。

这个字段是文本型的,日期型、数值型等字段为空值时,是否也会出现此种情况。如何解决。谢谢大家。

------解决方案--------------------
text1.text = rst1.fields("姓名") &""
因为rst1.fields("姓名")的值为NULL才会出现这种错误,而使用这种方式就可以很好地解决这个问题了
------解决方案--------------------
当"姓名"字段为空值时,楼主的代码相当于执行了
Text1.Text = Null
这在VB6中是会报错"出现无效使用NULL".可像1楼所说那样处理,或调用封装的函数处理,用函数处理比较适合于要进行代码重用的场合.
调用:
Text1.Text = AsString(rst1.fields("姓名"))

VB code
Function AsString(ByVal v1 As Variant) As String
   On Error GoTo AsString_Error

    AsString = v1

   On Error GoTo 0
   Exit Function

AsString_Error:

    AsString = ""
    
End Function

------解决方案--------------------
不为什么,王八的屁股 = 龟腚(规定) 再加 编译器魔法

Text1.Text = Rst1.Fields("姓名") & "" 运行通过。 
<==编译器魔法,编译器偷偷做了手脚 .(我用WIN7 X64,目前没找到windbg for win7 x64的,你可以自己调进去看,编译器做了什么手脚)

Text1.Text = CStr(Rst1.Fields("姓名")) 运行通不过,也是提示无效使用NULL 
因为你调用的 CStr 函数不支持直接把DBNULL转换为string,所以报错


探讨
刚试了一下:
Text1.Text = Rst1.Fields("姓名") & "" 运行通过。

Text1.Text = CStr(Rst1.Fields("姓名")) 运行通不过,也是提示无效使用NULL

请问:
  (1)Rst1.Fields("姓名") & "" 也就是NULL &"" 可以。
  (2)为什么CStr(Rst1.Fields("姓名"))不可以。

------解决方案--------------------
探讨
刚试了一下:
Text1.Text = Rst1.Fields("姓名") & "" 运行通过。

Text1.Text = CStr(Rst1.Fields("姓名")) 运行通不过,也是提示无效使用NULL

请问:
  (1)Rst1.Fields("姓名") & "" 也就是NULL &"" 可以。
  (2)为什么CStr(Rst1.Fields("姓名"))不可以。