gpt4 book ai didi

vba - 在 Access VBA 中声明新记录集时,为什么以及何时使用 New 关键字?

转载 作者:行者123 更新时间:2023-12-01 13:44:52 24 4
gpt4 key购买 nike

有什么区别

Dim rs as New adodb.recordset

Dim rs as adodb.recordset

在什么情况下我想使用或不使用 New 语句?对于上下文,我正在开发连接到 SQL Server 后端的 ADODB Access 应用程序。

最佳答案

New 关键字创建对象的 实例,此处的类型为 ADODB.Recordset

对象变量在被 Access 之前需要有一个引用,因此:

Dim rs As ADODB.Recordset
rs.Open "SELECT * FROM TableName"

...将在运行时爆炸并出现错误 #91 - “未设置对象或 block 变量”。该消息的重要部分是“未设置”。

当你这样做时:

Dim rs As New ADODB.Recordset

你真的在做:

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

Set 关键字用于为对象变量分配一个引用


特别是关于 ADODB.Recordset,我会说您通常不想新建记录集。相反,您将通过运行参数化的 ADODB.Command得到一个(例如,当命令运行 SELECT 语句时,您将收到一个记录集 结果)。


我建议不要在过程范围内使用 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.Count 被 Access 时 c 不再被“设置”而崩溃,那你就中招了。

此代码的行为符合预期:

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

关于vba - 在 Access VBA 中声明新记录集时,为什么以及何时使用 New 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36725085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com