🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst] base neue oder geänderte Datensätze sichern
[gelöst] base neue oder geänderte Datensätze sichern
Guten Tag,
ich benutze LibreOffice Version: 4.2.7.2 unter Microsoft Windows 8.1 Home 6.03.9600 x64, Java 7 Update 71.
In einer base Datenbank - 1,25 MB - gebe ich neue Datensätze ein oder ändere Datensätze. Wenn LibreOffice oder der PC abstürzt, gehen alle Datensätze und Änderungen seit dem letzten Start von Base verloren.
LibreOffice Speicheroptionen sichern z.B. alle erfolgten Änderungen von Writer Dateien, den aktuellen Stand der Base Datei jedoch nicht.
Im Internet fand ich u.a. diesen Hinweis:
http://oooforum.de/viewtopic.php?t=61376&p=230164
Beim Ausführen von „Daten_aus_Cache_schreiben“ erfolgt ein BASIC-Laufzeitfehler (png: oDaten = ThisDatabaseDocument.CurrentController). Ohne „Daten_aus_Cache_schreiben“ wird nur die odb vor dem Base Start gesichert, was nicht hilft.
LibreOffice Version: 4.3.3. versuchte ich. Der gleiche Fehler tritt dort auch auf.
In dieser Version speichert Calc eine ods mit mehreren Verknüpfungen zum Internet nicht, LibreOffice Version: 4.3.3 stürzt bei diesem Speichern jedes mal ab.
Ich verfüge nur über geringe PC und LibreOffice Kenntnisse.
Die erneute Eingabe der Datensätze würde ich gerne vermeiden und bin deshalb für jede Hilfe sehr dankbar.
Grüße
malt14
ich benutze LibreOffice Version: 4.2.7.2 unter Microsoft Windows 8.1 Home 6.03.9600 x64, Java 7 Update 71.
In einer base Datenbank - 1,25 MB - gebe ich neue Datensätze ein oder ändere Datensätze. Wenn LibreOffice oder der PC abstürzt, gehen alle Datensätze und Änderungen seit dem letzten Start von Base verloren.
LibreOffice Speicheroptionen sichern z.B. alle erfolgten Änderungen von Writer Dateien, den aktuellen Stand der Base Datei jedoch nicht.
Im Internet fand ich u.a. diesen Hinweis:
http://oooforum.de/viewtopic.php?t=61376&p=230164
Beim Ausführen von „Daten_aus_Cache_schreiben“ erfolgt ein BASIC-Laufzeitfehler (png: oDaten = ThisDatabaseDocument.CurrentController). Ohne „Daten_aus_Cache_schreiben“ wird nur die odb vor dem Base Start gesichert, was nicht hilft.
LibreOffice Version: 4.3.3. versuchte ich. Der gleiche Fehler tritt dort auch auf.
In dieser Version speichert Calc eine ods mit mehreren Verknüpfungen zum Internet nicht, LibreOffice Version: 4.3.3 stürzt bei diesem Speichern jedes mal ab.
Ich verfüge nur über geringe PC und LibreOffice Kenntnisse.
Die erneute Eingabe der Datensätze würde ich gerne vermeiden und bin deshalb für jede Hilfe sehr dankbar.
Grüße
malt14
- Dateianhänge
-
- oDaten = ThisDatabaseDocument.CurrentController.PNG (259.96 KiB) 6732 mal betrachtet
Zuletzt geändert von malt14 am So 9. Nov 2014, 13:33, insgesamt 2-mal geändert.
Re: base neue oder geänderte Datensätze sichern
Hallo malt14,
ich sehe, dass Du das Makro nicht in der datenbankdatei liegen hast, sondern unter "Meine Makros ¬ Dialoge". Das Makro kann aber sowieso nur laufen, wenn die Datenbankdatei öffnet bzw. die Datenbankdatei offen ist.
Wie startest Du "Daten_aus_Cache_schreiben"? Das Beste wäre, dies mit einem Button in einem Formular der Datenbank zu erledigen.
Gruß
Robert
ich sehe, dass Du das Makro nicht in der datenbankdatei liegen hast, sondern unter "Meine Makros ¬ Dialoge". Das Makro kann aber sowieso nur laufen, wenn die Datenbankdatei öffnet bzw. die Datenbankdatei offen ist.
Wie startest Du "Daten_aus_Cache_schreiben"? Das Beste wäre, dies mit einem Button in einem Formular der Datenbank zu erledigen.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: base neue oder geänderte Datensätze sichern
Guten Abend Robert,
Dank für Deine Information.
Ich versuchte, das Makro korrekt unterzubringen.
Starte ich „Daten_aus_Cache_schreiben“ aus dem Formular nach Eingabe neuer oder Änderung vorhandener Datensätze und danach „Datenbankbackup“ wird die Datei im vorgesehenen Sicherungspfad erstellt. Die neuen oder geänderten Datensätze fehlen; Zustand wie beim Start der Datenbank.
Ich starte die beiden Makros aus dem Formular über Extras/Makros..
In dem Datenerfassungsformular versuchte ich Button einzurichten, für „Daten_aus_Cache_schreiben“ und „Datenbankbackup“. „Daten_aus_Cache_schreiben“ Button kann ich anklicken, bei „Datenbankbackup“ erfolgt die beigefügte Fehlermeldung.
Lassen sich „Daten_aus_Cache_schreiben“ und „Datenbankbackup“ kombinieren, so daß man mit einem Button Klick neue oder geänderte Datensätze sichert?
Könnte man einen solchen Button in der Symbolleiste des Formulars platzieren?
Im Handbuch Base - Makros fand ich nichts dazu, kann aber an mir liegen.
Danke für Deine Hilfe
Grüße
malt14
Dank für Deine Information.
Ich versuchte, das Makro korrekt unterzubringen.
Starte ich „Daten_aus_Cache_schreiben“ aus dem Formular nach Eingabe neuer oder Änderung vorhandener Datensätze und danach „Datenbankbackup“ wird die Datei im vorgesehenen Sicherungspfad erstellt. Die neuen oder geänderten Datensätze fehlen; Zustand wie beim Start der Datenbank.
Ich starte die beiden Makros aus dem Formular über Extras/Makros..
In dem Datenerfassungsformular versuchte ich Button einzurichten, für „Daten_aus_Cache_schreiben“ und „Datenbankbackup“. „Daten_aus_Cache_schreiben“ Button kann ich anklicken, bei „Datenbankbackup“ erfolgt die beigefügte Fehlermeldung.
Lassen sich „Daten_aus_Cache_schreiben“ und „Datenbankbackup“ kombinieren, so daß man mit einem Button Klick neue oder geänderte Datensätze sichert?
Könnte man einen solchen Button in der Symbolleiste des Formulars platzieren?
Im Handbuch Base - Makros fand ich nichts dazu, kann aber an mir liegen.
Danke für Deine Hilfe
Grüße
malt14
- Dateianhänge
-
- Daten_aus_Cache_schreiben.PNG (89.68 KiB) 6731 mal betrachtet
Re: base neue oder geänderte Datensätze sichern
button Datenbankbackup Fehler
- Dateianhänge
-
- button Datenbankbackup Fehler.PNG (105.56 KiB) 6731 mal betrachtet
Re: base neue oder geänderte Datensätze sichern
button für Datenbankbackup
- Dateianhänge
-
- button für Datenbankbackup.PNG (78.18 KiB) 6731 mal betrachtet
Re: base neue oder geänderte Datensätze sichern
Hallo malt14,
die Prozedur, die beide kombiniert, ist "Backup_sofort". Aus der heraus wird zuerst "Daten_aus_Cache_schreiben" ausgeführt und anschließend "Datenbankbackup". Die Prozedur "Backup_sofort" sollte also auf jeden Fall mit dem Button verbunden werden, wenn Du ein aktuelles Backup in das Sicherungsverzeichnis haben möchtest.
Ich habe gerade noch einmal das Makro durchprobiert. Werte in einer Tabelle neu geschrieben, das Makro "Backup_sofort" laufen lassen und anschließend die so erstellte Backup-Datei einmal aufgesucht. In der Datei war auch der neue Eintrag vorhanden.
Erscheint bei Dir grundsätzlich die Fehlermedlung "Pfad nicht gefunden"? Dann mach' doch einmal die Einträge
msgbox sUrl_Start
msgbox sUrl_Ziel
Dann siehst Du, welcher Pfad durch das Makro ausgewählt wird.
Kann ja sein, dass irgendwelche Fehler auftauchen, die mit der Wahl von Dateinamen zusammen hängen. Ich habe PCs kennen gelernt, als Dateinamen noch auf 8 Buchstaben ohne Soderzeichen begrenzt waren. Auch heute noch wirst Du bei mir keinen Dateinamen und auch keine Tabellenbezeichnung finden, in der Sonderzeichen, auch Leertasten o.ä. auftauchen. Einzige Zeichen, das ich neben den normalen Buchstaben und Zahlen nutze, ist der Unterstrich.
Habe den Fehler gefunden! Das Makro hatte ich grundsätzlich nur mit dem Start der Base-datei getestet - nicht aus dem geöffneten Formular. Das interne Formular gibt keine URL zurück.
Es hilft:
Damit wird auf jeden Fall die korrekte URL ausgelesen. Ich habe das jetzt auch aus einem Formular und aus einem Subformular getestet. Muss ich sofort im Handbuch ändern. Dann schreibe ich auch gleich noch dazu, wie die Erweiterung auf beliebig viele Backups geht ...
Gruß
Robert
die Prozedur, die beide kombiniert, ist "Backup_sofort". Aus der heraus wird zuerst "Daten_aus_Cache_schreiben" ausgeführt und anschließend "Datenbankbackup". Die Prozedur "Backup_sofort" sollte also auf jeden Fall mit dem Button verbunden werden, wenn Du ein aktuelles Backup in das Sicherungsverzeichnis haben möchtest.
Ich habe gerade noch einmal das Makro durchprobiert. Werte in einer Tabelle neu geschrieben, das Makro "Backup_sofort" laufen lassen und anschließend die so erstellte Backup-Datei einmal aufgesucht. In der Datei war auch der neue Eintrag vorhanden.
Erscheint bei Dir grundsätzlich die Fehlermedlung "Pfad nicht gefunden"? Dann mach' doch einmal die Einträge
msgbox sUrl_Start
msgbox sUrl_Ziel
Dann siehst Du, welcher Pfad durch das Makro ausgewählt wird.
Kann ja sein, dass irgendwelche Fehler auftauchen, die mit der Wahl von Dateinamen zusammen hängen. Ich habe PCs kennen gelernt, als Dateinamen noch auf 8 Buchstaben ohne Soderzeichen begrenzt waren. Auch heute noch wirst Du bei mir keinen Dateinamen und auch keine Tabellenbezeichnung finden, in der Sonderzeichen, auch Leertasten o.ä. auftauchen. Einzige Zeichen, das ich neben den normalen Buchstaben und Zahlen nutze, ist der Unterstrich.
Habe den Fehler gefunden! Das Makro hatte ich grundsätzlich nur mit dem Start der Base-datei getestet - nicht aus dem geöffneten Formular. Das interne Formular gibt keine URL zurück.
Es hilft:
Code: Alles auswählen
oDoc = ThisComponent
sUrl_Start = oDoc.URL
sTitel = oDoc.Title
DO WHILE sUrl_Start = ""
oDoc = oDoc.Parent
sTitel = oDoc.Title
sUrl_Start = oDoc.URL
LOOP
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: base neue oder geänderte Datensätze sichern
Hallo Robert,
zunächst herzlichen Dank für Deine Hilfe bisher und, soweit ich das beim kursorischen Lesen im Internet bemerkte, Dein Engagement für das schöne LibreOffice Projekt.
Mit dem zusätzlichen Code funktioniert das „Backup_sofort“ aus dem Formular über „Extras ..“.
Per Button erhalte ich noch immer die gleiche Fehlermeldung.
Kann das an meinen Einstellungen im Button liegen?
Wenn ich in dem Fenster der Fehlermeldung den Button „Makro auswählen“ anklicke und dann „Backup_sofort“, funktioniert es.
Per Button wird zunächst „soffice“ angezeigt, der folgende Pfad stimmt mit dem überein, in den per „Extras ..“ gespeichert wird.
Auch in einer neuen Testdatenbank mit einfachem Namen funktionierte der Button nicht.
Das Löschen der LibreOffice Roaming Daten und Starten der Testdatenbank führte zu keiner Änderung.
Ich weiß nicht, ob eine Neuinstallation von LibreOffice sinnvoll wäre.
Als Laie kann ich nicht beurteilen, ob es mit vertretbarem Aufwand möglich ist, in LibreOffice eine Funktion zum Speichern der odb mit geänderten Datensätzen einzubauen. Auf meinem System stürzt LibreOffice gelegentlich ab - meist wenn ich neben Base noch Calc benutze - und die erneute Eingabe mehrerer Datensätze ist lästig.
Grüße
Malt14
zunächst herzlichen Dank für Deine Hilfe bisher und, soweit ich das beim kursorischen Lesen im Internet bemerkte, Dein Engagement für das schöne LibreOffice Projekt.
Mit dem zusätzlichen Code funktioniert das „Backup_sofort“ aus dem Formular über „Extras ..“.
Code: Alles auswählen
REM ***** BASIC *****
SUB Datenbankbackup
REM Von der Datenbankdatei *.odb wird eine Kopie in das Backup-Verzeichnis erstellt.
REM Die Maximalzahl an Kopien ist auf 5 Kopien eingestellt. Anschließend wird die älteste Kopie ersetzt.
REM Dieses Verfahren deckt nicht ab:
REM - Dateneingaben, die bei bereits geöffneter Datenbank gemacht werden, da die Daten erst beim Schließen der Datei in die *.odb-Datei geschrieben werden.
REM Siehe dazu die Prozedur "Daten_aus_Cache_schreiben"
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 'Name des Dokumentes, z.B. Medien_mit_Makros.odb'
sUrl_Start = oDoc.URL 'Pfad zu dem Titel'
oPath = createUnoService("com.sun.star.util.PathSettings")
FOR i = 1 TO 6
IF NOT FileExists(oPath.Backup & "/" & i & "_" & sTitel) THEN
REM Im Backup-Verzeichnis des Datenbanknutzers von LO wird gespeichert, und zwar beginnend mit der Nummer, gefolgt durch einen Unterstrich und weiter mit dem ursprünglichen Titel.
IF i > 5 THEN
REM Wenn i größer als 5 wird existieren bereits 5 Sicherheitskopien. Jetzt muss nachgesehen werden, welche Kopie die älteste ist, um diese zu ersetzen.
FOR k = 4 TO 1 STEP -1
IF FileDateTime(oPath.Backup & "/" & k & "_" & sTitel) <= FileDateTime(oPath.Backup & "/" & k+1 & "_" & sTitel) THEN
REM Die Datei mit der Nummer 4 muss auf vor der mit der Nummer 5 erstellt worden sein. Ist dies der Fall, so wird weiter gesucht.
REM Die Suche beginnt also bei 4 und wird abwärts fortgesetzt, immer im direkten Vergleich mit der nächst höheren Ziffer.
REM Ist 1 erreicht und immer noch vor 2 erstellt worden, so wird 1 ersetzt.
IF k = 1 THEN
i = k
EXIT FOR
END IF
ELSE
REM ist eine Zahl erreicht worden, bei der die Datei mit der höheren Nummer älter ist als die Datei mit der niedrigeren Nummer, so wird die Datei mit der höheren Nummer ersetzt.
i = k+1
EXIT FOR
END IF
NEXT
END IF
EXIT FOR
END IF
NEXT
sUrl_Ziel = oPath.Backup & "/" & i &"_" & sTitel
REM Der Pfad für die Zieldatei wird festgelegt und das Dokument zur Zieldatei hin kopiert.
FileCopy(sUrl_Start,sUrl_Ziel)
END SUB
SUB Daten_aus_Cache_schreiben
oDoc = ThisComponent
sUrl_Start = oDoc.URL
sTitel = oDoc.Title
DO WHILE sUrl_Start = ""
oDoc = oDoc.Parent
sTitel = oDoc.Title
sUrl_Start = oDoc.URL
LOOP
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
Kann das an meinen Einstellungen im Button liegen?
Wenn ich in dem Fenster der Fehlermeldung den Button „Makro auswählen“ anklicke und dann „Backup_sofort“, funktioniert es.
Per Button wird zunächst „soffice“ angezeigt, der folgende Pfad stimmt mit dem überein, in den per „Extras ..“ gespeichert wird.
Auch in einer neuen Testdatenbank mit einfachem Namen funktionierte der Button nicht.
Das Löschen der LibreOffice Roaming Daten und Starten der Testdatenbank führte zu keiner Änderung.
Ich weiß nicht, ob eine Neuinstallation von LibreOffice sinnvoll wäre.
Als Laie kann ich nicht beurteilen, ob es mit vertretbarem Aufwand möglich ist, in LibreOffice eine Funktion zum Speichern der odb mit geänderten Datensätzen einzubauen. Auf meinem System stürzt LibreOffice gelegentlich ab - meist wenn ich neben Base noch Calc benutze - und die erneute Eingabe mehrerer Datensätze ist lästig.
Grüße
Malt14
- Dateianhänge
-
- button.PNG (17.27 KiB) 6699 mal betrachtet
Re: base neue oder geänderte Datensätze sichern
Hallo malt14,
Du hast die ergänzung an der falschen Stelle eingebaut.
Dieser Code aus «Datenbankbackup»:
sollte durch diesen Code ersetzt werden:
Ich habe das jetzt für das kommende Handbuch LO 4.4 überarbeitet und noch erweitert, so dass die Anzahl der Backups eingestellt werden kann. Im Handbuch steht jetzt auch, wie das Makro in der Base-Oberfläche direkt einer Symbolleiste zugewiesen werden kann - zusammen mit Screenshots: http://robert.familiegrosskopf.de/lo_hb_dev/
Gruß
Robert
Du hast die ergänzung an der falschen Stelle eingebaut.
Dieser Code aus «Datenbankbackup»:
Code: Alles auswählen
oDoc = ThisComponent
sTitel = oDoc.Title 'Name des Dokumentes, z.B. Medien_mit_Makros.odb'
sUrl_Start = oDoc.URL 'Pfad zu dem Titel'
Code: Alles auswählen
oDoc = ThisComponent
sUrl_Start = oDoc.URL
sTitel = oDoc.Title
DO WHILE sUrl_Start = ""
oDoc = oDoc.Parent
sTitel = oDoc.Title
sUrl_Start = oDoc.URL
LOOP
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: base neue oder geänderte Datensätze sichern
Hallo Robert,
vielen Dank.
Alles funktioniert!
Grüße
malt14
vielen Dank.
Alles funktioniert!
Grüße
malt14
-
- * LO-Experte *
- Beiträge: 831
- Registriert: Fr 28. Mär 2014, 10:41
Re: [gelöst] base neue oder geänderte Datensätze sichern
Hallo,
Gruß
Freischreiber
Das kann ich leider bestätigen! Nach diesem Hinweis habe ich meinen Datenbank-Dateinamen, der ein Leerzeichen enthalten hatte, geändert. Und jetzt funktioniert das Makro Datenbankbackup plötzlich, wie es soll. Bisher hatte es, wenn fünf Sicherungen gespeichert waren, künftig immer nur dieselbe aktualisiert beim Öffnen, die anderen vier blieben gleich.Kann ja sein, dass irgendwelche Fehler auftauchen, die mit der Wahl von Dateinamen zusammen hängen.
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.