Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Öffne alle 60 Sekunden Abfrage ; nach Zeit Absturz





Frage

Ich öffne für eine Terminliste, die ständig aktualisiert werden muss, alle 60 Sekunden eine Abfrage. Nach dem auslesen der Daten schließe ich diese Abfrage wieder und zerstöre den Bezug mit "set rst = nothing". Nach ungefähr 2 Stunden jedoch stürzt die Software ab und meldet, dass sie die SQL-Anweisung nicht kennen würde (mit der ich ja die ganze Zeit vorher gearbeitet habe). Wie kann ich das beheben? Andre

Antwort 1 von PotzBlitz

Hallo Andre,

es ist empfehlenswert, wenn du ein Objekt wie z.B. das Recordset zunächst mit der Close-Methode schliesst, bevor du es mit Nothing vernichtest. Access hat zwar eine halbwegs gut funktionierende Objektvernichtung, aber es ist trotzdem nicht auszuschliessen, dass Müll im Speicher zurückbleibt.

′-----------------------------
rst.Close
Set rst = Nothing
′-----------------------------

Alternativ empfiehlt es sich, das Recordset im Deklarationsteil des Moduls zu definieren, so dass es nach jeder Verwendung nicht ständig zerstört wird.

′-----------------------------
Private rst As Recordset

Public Sub TestProzedur()
   ′ Beliebige Verwendung des Recordsets
   rst.Edit
   rst.Fields(0) = "blabla"
   rst.Update

   rst.Close
End Sub
′-----------------------------

Die o.g. Beispiele gelten analog auch für Abfragen / QueryDef-Objekte.

Wie sehr man sich NICHT auf die Access-eigene Müllbeseitigung verlassen kann, habe ich vor einiger Zeit erlebt, als eine frisch entwickelte Klasse importierte Daten aufbereiten sollte, um sie dann später in der Datenbank zu speichern. Die Klasse blähte sich dabei auf 40 MB auf, wovon ohne explizite Objektschliessung/-vernichtung 30 MB bis zum Beenden von Access ständig im Arbeitsspeicher verblieben. Bei jeder Verwendung der Klasse kamen dann auch noch jeweils 30 MB dazu.

Bei einer Fehlermeldung kann übrigens der exakte Wortlaut bzw. die Fehlernummer (im Debug-Fenster "? Err.Number") sehr hilfreich sein.

Gruss
PotzBlitz

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: