【问题标题】:Set Object to Nothing before creating a new instance of object?在创建对象的新实例之前将 Object 设置为 Nothing?
【发布时间】:2015-04-23 18:03:57
【问题描述】:

在 VBA 中,在声明对象的新实例之前将对象设置为 Nothing 是否是一种好习惯?

例如:

Private Sub SetupConn()

Const Provider As String = "sqloledb"
Const LanDataSource As String = "127.0.0.1"
Const WanDataSource As String = "mail.12345678.biz:12345"

Dim UserName As String
Dim Password As String

UserName = "myusername"
Password = "mypassword"

这是我想知道是否应该关闭 连接或在重新打开新连接之前将其设置为空。

Set mDBconn = New ADODB.Connection

Select Case mConnMethod
Case WAN
    mConnStr = "Provider='" & Provider & ";Data Source=" & WanDataSource _
             & ";User ID=" & UserName & ";Password=" & Password
Case Lan
    mConnStr = "Provider='" & Provider & ";Data Source=" & LanDataSource _
             & ";User ID=" & UserName & ";Password=" & Password
End Select
End Sub

场景是用户在路上,使用移动数据连接,他到达办公室,想要直接进入高速 wifi 连接,而无需关闭和重新打开程序。在这种情况下,我要做的是将连接方法设置为 LAN 并使用重置参数调用此子。

【问题讨论】:

  • 在 VBA 中不确定,但如果您使用新引用设置变量,旧的引用将被覆盖并被垃圾收集器捕获,因为不再使用。
  • 这也是我将其标记为 ADODB 的部分原因,我不知道在不关闭它的情况下将对象设置为空是否有任何危害。
  • 那么,最好等待更了解adodb模型的人。我知道以上内容,但我不确定,所以不想传播错误的信息。暂时小心。
  • 我想我的部分问题是关于这与关闭 ADODB 连接有何关系。

标签: ms-access vba adodb


【解决方案1】:

我猜根据这个Whats the difference between rs.close vs rs = nothing in a RecordSet, 关闭和设置任何内容都很好。这回答了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多