rst.close en set rst=nothing

Status
Niet open voor verdere reacties.

JelleKoen

Gebruiker
Lid geworden
30 okt 2012
Berichten
58
Aan het eind van een routine leerde ik een geopende recordset te sluiten met de opdrachten:

Code:
prc_exit:
[INDENT]rst.close
Set rst = Nothing
Exit sub
[/INDENT]

Het is me nooit duidelijk geworden waarom ik rst.close moet gebruiken.
Kan ik niet alleen volstaan met Set rst = Nothing?
 
Met rst.Close wordt de recordset netjes gesloten.
Met Set rst = Nothing wordt het gebruikte object vrijgegeven.
 
Dank voor je antwoord, maar mijn vraag was onvoldoende duidelijk.
Als ik het object vrijgeef, dan is toch ook de recordset meteen gesloten?
Waarom dan eerst rst.close gebruiken?
 
Zodat deze netjes wordt afgesloten en niet eventueel een fout status achterlaat.
 
Duidelijk! Goed argument.
Ben het nog niet tegengekomen, maar er kan natuurlijk inderdaad nog een foutmelding ontstaan.
 
Set rst = nothing kan je weglaten, die doet niks in deze situatie.
 
Dat geeft me dan weer de vraag in welke situatie ik Set rst = Nothing wel moet gebruiken.;)
 
Wanneer het niet aan het einde van een routine is maar ergens midden in de code.
 
Wanneer het niet aan het einde van een routine is maar ergens midden in de code.
Zelfs dan is het zelden nodig want objecten worden automatisch verwijderd als een procedure wordt afgesloten.

Een recordset openen en niet sluiten kan tot corrupte data leiden, al heb ik dat zelf nooit meegemaakt. Maar toch is het beter om de (virtuele) recordset netjes af te sluiten. Zeker als je hem later in de procedure nog een keer gebruikt.
 
Helemaal waar. Set Object = Nothing doe je als je het door dat object in beslag genomen geheugen vrij wilt geven voordat de routine waarin deze is aangemaakt afloopt.
 
Haha, ok.
Moet ik nu nog wel of eigenlijk niet reageren ;)

De beste wensen nog ook voor jou :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan