Saturday, October 8, 2016

How to correctly release object variables in ADO

Connection object

Cnxn.Open sConnString     '"Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=JCGPRD01)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=JCG04AW.vsp.sas.com)(PORT=6660)))(CONNECT_DATA=(SID=JCGPRD01)(SERVER=DEDICATED)));User Id=jcg0vbapp;Password=oyv3re8d4;"
          '
100       If Cnxn.State <> adStateOpen Then

110          sMsg = "**** ERROR Could Not Open Connection to File! ****" & vbCrLf & vbCrLf & _
                       "in Module 'modUtils' - Function 'Fetch_TD_Data'" & vbCrLf & "Line # " & 90 & vbCrLf & _
                       vbCrLf & " SQL: '" & strSQL & "'"
120          vLogMsg = sMsg
130          MsgLog

140          GoTo Fetch_TD_Data_Exit
150       End If


 Recordset object
Set rs = New ADODB.Recordset
190       strSQL = cnstLOCK_ROWS & strSQL
200       rs.Open strSQL, Cnxn  ', adOpenStatic, adLockReadOnly, adCmdText 'adLockOptimistic  'adLockReadOnly
          '
210       If rs.State <> adStateOpen Then

220          sMsg = "**** ERROR Could Not Open/Find File! ****" & vbCrLf & vbCrLf & _
                       "in Module 'modUtils' - Function 'Fetch_TD_Data'" & vbCrLf & "Line # " & 190 & vbCrLf & _
                       vbCrLf & " SQL: '" & strSQL & "'"
230          vLogMsg = sMsg
240          MsgLog

250          GoTo Fetch_TD_Data_Exit
260       End If



Determine if a recordset contains data


If Not rs.EOF And Not rs.BOF Then    'Check for End or Beginning of File
'310           Debug.Print rs!locationid    'Print the contents of the field...
'           End If
'280       If rs.RecordCount > 0 Then
360          vtemp = rs.GetRows()
370          If IsArray(vtemp) Then
380             Fetch_TD_Data = TransposeArray(vtemp)    'vtemp '
390          End If
400       Else
410          sMsg = "**** ERROR NO DATA FOUND ****" & vbCrLf & vbCrLf & _
                       "in Module 'modUtils' - Function 'Fetch_TD_Data'" & vbCrLf & "Line # " & 140 & vbCrLf & _
                       vbCrLf & " SQL: '" & strSQL & "'"
420          vLogMsg = sMsg
430          MsgLog
440       End If 



Cleanup recordset object variable

 ' clean up
450       If Not rs Is Nothing Then
460          If rs.State = adStateOpen Then rs.Close
470       End If
480       Set rs = Nothing



Cleanup connection object variable

 490       If Not Cnxn Is Nothing Then
500           If Cnxn.State = adStateOpen Then Cnxn.Close
510       End If
520       Set Cnxn = Nothing

No comments: