Hi Peter, here the macro for saving data while opening or running Base:
---------------- SUB DatabaseBackup(inMax AS INTEGER) REM A copy of the databasefile *.odb would be created in the Backup-folder. REM The amount is limited to 5 copies. After it has reached 5 copies, the oldest copy would be replaced by the new copy. REM This procedure doesn't solve the problem, that input of data in the opened HSQLDB-database couldn't be solved. REM Data of the internal HSQLDB were written in the *.odb-file, when the file will be closed. REM The procedure "WriteDataFromCache" helps to write the data into the opened *.odb-file. DIM oPath AS OBJECT DIM oDoc AS OBJECT DIM sTitel AS STRING DIM sUrl_Target AS STRING DIM sUrl_Start AS STRING DIM i AS INTEGER DIM k AS INTEGER oDoc = ThisComponent sTitel = oDoc.Title 'Name of the document, for example Media_with_Macros.odb sUrl_Start = oDoc.URL 'Path to the title oPath = createUnoService("com.sun.star.util.PathSettings") FOR i = 1 TO inMax + 1 IF NOT FileExists(oPath.Backup & "/" & i & "_" & sTitel) THEN REM Saved in the backup-path of the database-user of LO, beginning with the number, followed by a underscore and the title of the database. IF i > inMax THEN REM If i bigger than 5, 5 backupcopies do exist. Now we have to look, which copy is the oldest. FOR k = inMax -1 TO 1 STEP -1 IF FileDateTime(oPath.Backup & "/" & k & "_" & sTitel) <= FileDateTime(oPath.Backup & "/" & k+1 & "_" & sTitel) THEN REM File with number 4 must be created before number 5. If this is right, searchung is going on. REM Searching begins with 4, counting downward. The number is matched with the number raised by one. REM If 1 is reached and created before 2, 1 would be replaced by the new copy. IF k = 1 THEN i = k EXIT FOR END IF ELSE REM If a number of a file is found, where the file is created later as the file with the number raised by one, the file with the number raised by one would be replaced. i = k+1 EXIT FOR END IF NEXT END IF EXIT FOR END IF NEXT sUrl_Target = oPath.Backup & "/" & i &"_" & sTitel REM The path for the targetfile is created and the document will be copied to this targetfile. FileCopy(sUrl_Start,sUrl_Target) END SUB SUB WriteDataFromCache REM Writes data of the opened HSQLDB-database while running Base directly to the harddrive. DIM oData AS OBJECT DIM oDataSource AS OBJECT oData = ThisDatabaseDocument.CurrentController IF NOT ( oData.isConnected() ) THEN oData.connect() oDataSource = oData.DataSource oDataSource.flush END SUB SUB BackupNow WriteDataFromCache DatabaseBackup(10) END SUB SUB BackupAtStart DatabaseBackup(10) END SUB -------------------------------- You could also download it from here: http://robert.familiegrosskopf.de/lo_hb_en/Media_with_Macros.odb If you start the macro while opening the database (view created) you have to use the sub BackupAtStart. If you start the macro while using the database (have opened any table, created new rows ...) you should start BackupNow. It will first save all data in the *.odb-file and afterwords save the database to the backup-folder of LO. Regards Robert -- Homepage: http://robert.familiegrosskopf.de LibreOffice Community: http://robert.familiegrosskopf.de/map_3 -- To unsubscribe e-mail to: users+unsubscr...@global.libreoffice.org Problems? https://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette List archive: https://listarchives.libreoffice.org/global/users/ All messages sent to this list will be publicly archived and cannot be deleted