Datenbankverbindung und Dokument per Makro schließen
Verfasst: Sa 28. Mai 2016, 01:12
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?
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?