之间有什么区别
Dim rs as New adodb.recordset
和
Dim rs as adodb.recordset
在什么情况下我想使用还是不使用New语句?对于上下文,我正在研究连接到SQL Server后端的ADODB访问应用程序。
该New
关键字创建一个新的对象的实例,此类型的ADODB.Recordset
。
一个对象变量在访问之前需要有一个引用,因此:
Dim rs As ADODB.Recordset
rs.Open "SELECT * FROM TableName"
...将在运行时因错误#91-“对象或未设置块变量”而爆炸。该消息的重要部分是“未设置”。
当您这样做时:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句