⑴Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
⑵Dim rs As New ADODB.Recordset
⑶Dim rs As Object
Set rs = CreateObject("ADODB.Recordset")
这三种定义对象的方法有何区别?请大侠们指点,谢谢了!
...全文
536打赏收藏
关于定义对象的一个问题?
⑴Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ⑵Dim rs As New ADODB.Recordset ⑶Dim rs As Object Set rs = CreateObject("ADODB.Recordset") 这三种定义对象的方法有何区别?请大侠们指点,谢谢了!
大侠能否看下,我这样用是否会造成内存泄露?
Dim rs1 As Object,rs2 As Object,rs2 As Object
Dim dc1 As Object,dc2 As Object,MD_变量s As Object
---------------------------------------------
Private Sub Form_Open(Cancel As Integer)
Set MD_变量s = CreateObject("Scripting.Dictionary")
MD_变量s.Add "rs1", rs1
MD_变量s.Add "rs2", rs2
MD_变量s.Add "rs3", rs3
MD_变量s.Add "dc1", dc1
MD_变量s.Add "dc2", dc2
'---------------------------
Call MY_生成对象(MD_变量s)
'---------------------------
Set rs1 = MD_变量s("rs1")
Set rs2 = MD_变量s("rs2")
Set rs3 = MD_变量s("rs3")
Set dc1 = MD_变量s("dc1")
Set dc2 = MD_变量s("dc2")
'---本来想着这些set 不用加在“MY_生成对象(MD_变量s)”函数里就能设置好正确指向,但没有通过,加上后能正常运行,我担心是否会造成内存泄露?
.....
End Sub
Private Sub Command_退出_Click()
Call MY_清除对象(MD_变量s)
Set MD_变量s = Nothing
DoCmd.Close
End Sub
-----------------------
Public Function MY_生成对象(列表 As Object)
Dim 对象名 As String
对象列表 = 列表.keys
For i = 0 To 列表.Count - 1
对象名 = 对象列表(i)
sl2 = Left(对象名, 2)
Select Case sl2
Case "rs"
Set 列表(对象名) = CreateObject("ADODB.Recordset")
Case "dc"
Set 列表(对象名) = CreateObject("Scripting.Dictionary")
End Select
Next i
End Function
Public Function MY_清除对象(列表 As Object)
Dim 对象名 As String
对象列表 = 列表.keys
For i = 0 To 列表.Count - 1
对象名 = 对象列表(i)
sl2 = Left(对象名, 2)
Select Case sl2
Case "rs"
If 列表(对象名).State Then 列表(对象名).Close
Set 列表(对象名) = Nothing
列表.Remove 对象名
Case "dc"
Set 列表(对象名) = Nothing
列表.Remove 对象名
End Select
Next i
End Function