Seite 1 von 1

Datenbankverbindung und Dokument per Makro schließen

Verfasst: Sa 28. Mai 2016, 01:12
von drheiser
Ich habe folgenden Code aus dem Libreoffice 4.0 Handbuch verwendet, um meine sql DB Verbindung zu schließen:

SUB Database_compaction
DIM stMessage AS STRING
oDataSource = ThisComponent.Parent.CurrentController
IF NOT (oDataSource.isConnected()) THEN
oDataSource.connect()
END IF
oConnection = oDataSource.ActiveConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SHUTDOWN COMPACT" ' The database is being compacted and shut down
oSQL_Statement.executeQuery(stSql)
stMessage = "The database is being compacted." + CHR(13) + "The form will now close."
stMessage = stMessage + CHR(13) + "Following this, the database file should be closed."
stMessage = stMessage + CHR(13) + "The database can only be accessed after reopening the database file."
msgbox stMessage
ThisDatabaseDocument.FormDocuments.getByName( "Maintenance" ).close
REM The closing of the database file causes a recovery operation when you open it again.
' ThisDatabaseDocument.close(True)
END SUB

Ich bekomme aber eine Fehlermeldung; siehe Anhang.

Warum kann man eigentlich die Datei nicht schließen mit ThisDatabaseDocument.close(True) ohne beim nächsten Start immer in die "Wiederherstellung" der Datei zu gelangen?

Re: Datenbankverbindung und Dokument per Makro schließen

Verfasst: Sa 28. Mai 2016, 10:07
von RobertG
Hallo drheiser,

Du versuchst eine MySQL-Datenbank mit einem Befehl für die interne HSQLDB zu schließen. Außerdem nutzt Du Code für eine ältere LO-Version. Das Komprimieren ist inzwischen nicht mehr nötig. Es wird beim Schließen der Datenbankdatei automatisch ausgeführt. Deswegen erscheint dieses makro auch nicht mehr in den neueren Handbuchversionen.

Warum beim .close(True) für die Datenbankdatei immer wieder die Wiederherstellung läuft kann ich nicht sagen. Das habe ich auch nur im Handbuch nach eigener Erfahrung dazugeschrieben.

Gruß

Robert