Seite 1 von 1
GELÖST Backup per Makro, Aufruf vom Formular
Verfasst: So, 11.05.2014 18:09
von WSO
Hallo Zusammen,
ich habe das Makro für Backup aus dem Base-Handbuch in meine Anwendung übernommen.
Es wird über ein Formular, in dem weitere Administratorfunktionen angesiedelt sind, aufgerufen.
Zum Aufruf über ein Formular sind die Zuweisungen der Start.- und Ziel-URL so anzupassen:
Code: Alles auswählen
sTitel = ThisDatabaseDocument.Title
sUrl_Start = ThisDatabaseDocument.URL
Ist ein nettes Teil, Dank an den Author.
Gruss,
WSO
Re: Backup per Makro, Aufruf vom Formular
Verfasst: Mo, 12.05.2014 16:37
von acco
Hallo Wolfram,
das kann bei eingebetteten Datenbanken zu trügerischer Sicherheit führen, da die Datenbank zum Zeitpunkt des Speicherns unter Umständen schon länger geöffnet ist. Alle Eingaben und Änderungen seit öffnen der Datenbank werden bei Ausführung des Makros nicht gespeichert, sind dann also verloren. Wenn das jedem User klar ist, dann ok.
Deshalb läßt Robert das Makro beim öffnen der DB automatisch im Hintergrund ausführen, der User wähnt sich so nicht in falscher Sicherheit. Der Vorteil der Ausführung des Makros aus einem Formular (bei eingebetteter DB) ist mir nicht ersichtlich. Vielleicht hilfst Du mir da auf die Sprünge? Denn ich bin Deiner Meinung, es ist ein "nettes Teil".
Gruß
acco
Re: Backup per Makro, Aufruf vom Formular
Verfasst: Mo, 12.05.2014 16:50
von RobertG
Hallo Wolfram, hallo acco,
aus dem Grunde steht in der Beispieldatenbank auch die Erweiterung, die ich auch hier im Formul aus den Diskussionen aufgegriffen habe:
Code: Alles auswählen
SUB Daten_aus_Cache_schreiben
REM Schreibt die Daten aus der Tabelle auch während der Laufzeit von Base direkt auf die Platte.
DIM oDaten AS OBJECT
DIM oDataSource AS OBJECT
oDaten = ThisDatabaseDocument.CurrentController
IF NOT ( oDaten.isConnected() ) THEN oDaten.connect()
oDataSource = oDaten.DataSource
oDataSource.flush
END SUB
SUB Backup_sofort
Daten_aus_Cache_schreiben
Datenbankbackup
END SUB
Die *.odb-Datei wird ja erst beim Abspeichern verändert geschrieben. Soll also während der geöffneten Datei ein Backup gemacht werden, so muss zuerst der temporäre Inhalt in die *.odb-Datei übertragen werden. Das macht "Daten_aus_Cache_schreiben".
Gruß
Robert
Re: Backup per Makro, Aufruf vom Formular
Verfasst: Mo, 12.05.2014 18:27
von acco
Hallo Robert, hallo Wolfram,
dann mach ich aus "nett" mal "klasse". Die Erweiterung kannte ich noch nicht. Danke!
Gruß
acco
Re: Backup per Makro, Aufruf vom Formular
Verfasst: Mo, 12.05.2014 19:27
von WSO
Hallo acco und Robert,
ja stimme voll und ganz zu, die Erweiterung von Robert kannte ich, ist nur noch nicht eingebaut.
Den Hinweis die Sicherung automatisch beim Anlauf zu machen finde ich wertvoll.
Da die Datenbank aber etliche male pro Tag geöffnet wird, denke ich jetztz drüber nach, die Sicherung max 1 X pro Tag automatisch laufen zu lassen, dem Anwender aber die Möglichkeit einer zusätzlichen Sicherung anzubieten.
Gruss,
Wolfram
Re: GELÖST Backup per Makro, Aufruf vom Formular
Verfasst: Mo, 07.03.2016 09:00
von tobiman26
Hallo Leute das ist genau das was ich gesucht habe
ich habe die Version aus dem Base handbuch übernommen das bezieht aber nicht wie hier genannt die URL die man angibt sondern die die man unter Extras Einstellungen OpenOffice Pfade als Sicherungsordner gewählt hat nun habe ich folgendes Problem beim ausführen des Makros kommt der Fehler
" Pfad nicht gefunden "
Code: Alles auswählen
SUB Datenbankbackup
DIM oPath AS OBJECT
DIM oDoc AS OBJECT
DIM sTitel AS STRING
DIM sUrl_Ziel AS STRING
DIM sUrl_Start AS STRING
DIM i AS INTEGER
DIM k AS INTEGER
oDoc = ThisComponent
sTitel = oDoc.Title
sUrl_Start = oDoc.URL
oPath = createUnoService("com.sun.star.util.PathSettings")
FOR i = 1 TO 6
IF NOT FileExists(oPath.Backup & "/" & i & "_" & sTitel) THEN
IF i > 5 THEN
FOR k = 4 TO 1 STEP -1
IF FileDateTime(oPath.Backup & "/" & k & "_" & sTitel) <= FileDateTime(oPath.Backup & "/" & k+1 & "_" & sTitel) THEN
IF k = 1 THEN
i = k
EXIT FOR
END IF
ELSE
i = k + 1
EXIT FOR
END IF
NEXT
END IF
EXIT FOR
END IF
NEXT
sUrl_Ziel = oPath.Backup & "/" & i &"_" & sTitel
FileCopy(sUrl_Start,sUrl_Ziel)
END SUB
SUB Daten_aus_Cache_schreiben
REM Schreibt die Daten aus der Tabelle auch während der Laufzeit von Base direkt auf die Platte.
DIM oDaten AS OBJECT
DIM oDataSource AS OBJECT
oDaten = ThisDatabaseDocument.CurrentController
IF NOT ( oDaten.isConnected() ) THEN oDaten.connect()
oDataSource = oDaten.DataSource
oDataSource.flush
END SUB
SUB Backup_sofort
Daten_aus_Cache_schreiben
Datenbankbackup
END SUB
könnt ihr mir da weiter helfen weil der Ordner den ich ausgewählt habe existiert
Re: GELÖST Backup per Makro, Aufruf vom Formular
Verfasst: Mo, 07.03.2016 17:24
von RobertG
Hallo tobiman26,
gebe einmal zwischen diesen beiden Schritten
Code: Alles auswählen
sUrl_Ziel = oPath.Backup & "/" & i &"_" & sTitel
FileCopy(sUrl_Start,sUrl_Ziel)
msgbox sUrl_Ziel
ein. Also:
Code: Alles auswählen
sUrl_Ziel = oPath.Backup & "/" & i &"_" & sTitel
msgbox sUrl_Ziel
FileCopy(sUrl_Start,sUrl_Ziel)
Dann schau einmal nach, ob das alles stimmig ist. Der Pfad müsste unter "Sicherungskopien" bei Dir verzeichnet sein.
Gruß
Robert
Re: GELÖST Backup per Makro, Aufruf vom Formular
Verfasst: Do, 10.03.2016 10:51
von tobiman26
Ich hab ein Neuen Ordner angelegt und unter Sicherheitskopien den Pfad geändert jetzt gehts
