假设我将使用下面的子代码运行各种查询。我应该每次set
和close
recordset
吗?或者set
和close
只与我的连接(cn
)一起使用?如果我关闭连接,是否需要关闭我的recorset?
Sub QueryPC(ByRef ReturnArray() As Variant, COB As Date, PC As Variant, FileCode As String)
Dim srtQry As String, tmpArray() As Variant
Set rs = CreateObject("ADODB.Recordset")
srtQry = "whatever"
Set rs = cn.Execute(srtQry)
If Not rs.EOF Then
tmpArray = rs.GetRows: TransposeArray tmpArray, ReturnArray
Else
ReDim ReturnArray(0)
End If
rs.Close
End Sub
答案 0 :(得分:1)
在代码中关闭查询中的rs是好的。更好的是,如果你对你的连接做了同样的事情!
规则 - 现在已经有好几年了 - 是尽快打开连接并尽快关闭。你显然已经将连接作为一个mudule级别或甚至更多的全局变量:这是不好的做法。您应该在使用它的地方创建它并关闭它。
没有太多的VBA样本这样做,可能是因为人们复制的VBA代码样本通常很旧,或者因为虽然编写样本的人擅长VBA,但他们不是全职开发人员。
干杯 -