Re: LiO Calc - stürzt nach längerer Makro-Laufzeit ab
Verfasst: Do, 24.01.2013 14:35
Das mit dem Dispose() habe ich jetzt in den Griff bekommen:
Das Dim als Deklaration nur an den Anfang und die RowSets nach Benutzung mit Dispose() freigeben.
Vor der Verwendung der RowSets erstelle ich sie mit
jeweils neu.
Das Programm läuft durch, am Speicherverbrauch ändert sich nichts...
Dann noch ein Versuch ohne das globale Datenbank-Objekt
stattdessen wird bei jedem Neuerstellen eines Rowsets das zugrundeliegende Datenbankobjekt neu erstellt, soweit ich dies verstanden habe (wegen der Angabe des DataSourceName statt der activeConnection:
Auch hier: Das Programm läuft durch (zu meiner Überraschung ohne Geschwindigkeitseinbußen), aber der Speicherverbrauch und damit der Absturz beim Speichern bleiben..
Ich werde jetzt noch ein paar Tests mit einem Minimalprogramm und verschiedenen Datenbanken (SQL-Server über ODBC soie Base-Datenbank) anstellen, ob hier auch jedesmal der Speicher volläuft...
Das Dim als Deklaration nur an den Anfang und die RowSets nach Benutzung mit Dispose() freigeben.
Vor der Verwendung der RowSets erstelle ich sie mit
Code: Alles auswählen
createUnoService("com.sun.star.sdb.RowSet")
Das Programm läuft durch, am Speicherverbrauch ändert sich nichts...
Dann noch ein Versuch ohne das globale Datenbank-Objekt
Code: Alles auswählen
db = connect_to_database("Adimens")
...
Sql = "SELECT artikel, name, vbme FROM artikel where artikel = '" & Artikel & "'"
oArtikelRowSet = createUnoService("com.sun.star.sdb.RowSet")
oArtikelRowSet.activeConnection = db
oArtikelRowSet.Command = Sql
oArtikelRowSet.execute
Code: Alles auswählen
Sql = "SELECT artikel, name, vbme FROM artikel where artikel = '" & Artikel & "'"
oArtikelRowSet = createUnoService("com.sun.star.sdb.RowSet")
oArtikelRowSet.DataSourceName = "Adimens"
oArtikelRowSet.Command = Sql
oArtikelRowSet.execute
Ich werde jetzt noch ein paar Tests mit einem Minimalprogramm und verschiedenen Datenbanken (SQL-Server über ODBC soie Base-Datenbank) anstellen, ob hier auch jedesmal der Speicher volläuft...