之间有什么区别
Dim rs as New adodb.recordset
和
Dim rs as adodb.recordset
在什么情况下我想使用New语句还是不使用它?对于上下文,我正在处理连接到SQL Server后端的ADODB访问应用程序。
答案 0 :(得分:3)
New
关键字会创建对象的 new 实例,此处为ADODB.Recordset
类型。
对象变量在访问之前需要有一个引用,所以这个:
Dim rs As ADODB.Recordset
rs.Open "SELECT * FROM TableName"
...将在运行时爆炸,错误#91 - "对象或With块变量未设置"。这条消息的重要部分是"未设置"。
当你这样做时:
Dim rs As New ADODB.Recordset
你真的在做:
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set
关键字用于将引用分配给对象变量。
特别关于ADODB.Recordset
,我说你通常 想要New
记录集。相反,您通过运行参数化ADODB.Command
来获取一个(例如,当命令运行SELECT
语句时,您将收到Recordset
结果)。
我建议不要在程序范围内使用As New
快捷方式。主要是因为:
Private Sub Test()
Dim c As New Collection
c.Add "Test"
Set c = Nothing
Debug.Print c.Count 'what happens here?
End Sub
如果您认为上述代码爆炸,因为c
不是"设置"当访问c.Count
时,你被咬了。
此代码的行为符合预期:
Private Sub Test()
Dim c As Collection
Set c = New Collection
c.Add "Test"
Set c = Nothing
Debug.Print c.Count 'what happens here? that's right, boom!
End Sub