Seite 1 von 2

Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Fr 23. Aug 2013, 09:13
von Sephan
Hallo, ich verwende folgende Funktion um Daten eines Formulars zu speichern und dieses Formular dann für neue Daten zu leeren:

Code: Alles auswählen

Sub save_and_new_row(event)
    on error goto errorhandler
    ocontroller = thiscomponent.currentcontroller
    oform = event.source.model.parent
    odatDatum = oform.getbyname("datDatum")
    odatDatumctrl = ocontroller.getcontrol(odatDatum)
    odatDatumctrl.setFocus
    oform.insertrow
    oform.movetoinsertrow
    errorhandler:
End Sub
Meine Frage ist nun, wie ich es gleichzeitig erreichen kann, dass die Base Datei auch gespeichert wird. Denn wenn ich soffice kille, sind die zuvor "gespeicherten" Einträge nicht in der Datenbank. Ich möchte unbedingt vermeiden, dass Daten verloren gehen. Das kam im Regeleinsatz meiner Base Datei leider vor. Weiß aber nicht, wie die User es geschafft haben. Darum soll jetzt bei jedem Speichern auch die Daten in der Basedatei gespeichert werden. Das heißt womöglich jedesmal ein Datenbank disconnect und reconnect. Solange die Daten jedesmal fest gespeichert werden, soll mir das Recht.

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Fr 23. Aug 2013, 11:52
von RobertG
Hallo Sephan,

versuche einmal das Folgende aus der Beispieldatenbank für das Handbuch:

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
Gruß

Robert

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Fr 23. Aug 2013, 13:47
von Sephan
Scheint echt zu klappen. Sehr gut :)

Jetzt hoffe ich mal, dass es keine Datenverluste mehr gibt :)

Großen Dank dir ;)

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Di 6. Mai 2014, 17:26
von Freischreiber
Hallo,

nachdem ich dieses Video von F3K gesehen habe zum Thema Frontend-Backend-Aufteilung:
https://www.youtube.com/watch?v=zwpbEFOcKxk

war ich echt erschrocken, was LO/OO unter "Dokumentwiederherstellung" versteht: Lesezugriff auf das, was vor dem Crash schon auf der Platte war unter Verwerfung des Dazugekommenen :?

Dann bin ich auf dieses Topic gestoßen und hab gleich das Makro installiert. Funktioniert gut, und ich glaube, das ist jetzt ein Beispiel für ein Ereignis "Nach der Datensatzaktion", oder?

Jetzt würde ich nur gern wissen: Was ist denn die "bessere" Lösung: Das Makro oder wirklich die Aufteilung der Datenbank in Frontend und Backend?
Braucht man die Aufteilung langfristig sowieso?
Ist das Arbeiten dann schneller als mit der internen Datenbank?

Gruß
Freischreiber

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Di 6. Mai 2014, 20:36
von RobertG
Hallo Freischreiber,

ich habe beide Datenbanktypen im Einsatz. Bisher habe ich bei keinem der Typen irgendwelchen Datenverlust gehabt. Trotzdem bin ich bei der internen Datenbank dazu übergegangen, ein Makro zu installieren, das mir beim Start der Datenbankdatei erst einmal eine Sicherungskopie ins LO-Backup-Verzeichnis legt.

Die externe Variante hat den Vorteil, dass dort die Daten sofort geschrieben werden und mehrere Personen gleichzeitigen Zugriff auf die Daten haben. Da würde ich zusammen mit LO vermutlich PostgreSQL im Moment den Vorzug geben. Dort ist einfach der Treiber immer in den Paketen dabei.

Die interne Variante hat den Vorteil, dass alles in einem Paket transportabel ist. Solche Datenbanken kann ich auf jedem Rechner starten auf dem eben LO oder AOO oder OOo verfügbar ist.

Gruß

Robert

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Mi 7. Mai 2014, 08:32
von Freischreiber
Hallo Robert,

das Makro mit der Sicherheitskopie klingt vielversprechend, das hätte ich auch gerne. Würdest du das hier veröffentlichen?

Achso, bei der Frontend-Backend-Methode muß auf dem Rechner zusätzliche Software installiert sein?

Gruß
Freischreiber

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Mi 7. Mai 2014, 10:01
von Acco
Hallo Freischreiber,

das Makro findest Du im Handbuch.

Gruß

acco

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Mi 7. Mai 2014, 19:54
von RobertG
Hallo Freischreiber,

für eine externe Lösung (Frontend - Backend) ist natürlich eine externe Datenbank nötig. Wenn Du z.B. über das Internet auf Daten zugreifen willst, dann haben viele Hoster hier eine MySQL-Datenbank dabei. Die kannst Du mit den Base-Formularen, Abfragen und Berichten ansteuern.

Gruß

Robert

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Do 8. Mai 2014, 16:15
von Freischreiber
Hallo,

ich hab das Makro für die Sicherheitskopien im Handbuch gefunden.

Problem: Was bedeutet: das Makro mit dem Öffnen des Dokuments verknüpfen? Ich versuche unter Extras - Makros verwalten - Basic - Zuweisen dem Ereignis "Dokument öffnen" das Makro zuzuweisen. Aber es taucht dort nicht auf. Dort sind nur zwei "Bibliotheken", und kein Hinweis auf das im Dokument gespeicherte Makro!

Gruß
Freischreiber

Übrigens: Was bedeutet die Funktion in den LO-Optionen "Sicherheitskopie immer erstellen"? Die ist bei mir aktiviert, aber ich hab noch nirgendwo eine Sicherheitskopie gesehen...

Re: Speichern Funktion um Daten in Base Datei zu speichern

Verfasst: Do 8. Mai 2014, 17:16
von Acco
Hallo Freischreiber,

1. Extras - Anpassen - Ereignisse - Dokument öffnen - Da das Makro eintragen (beachten: in "Speichern in..." Auswahlfeld: die DB eintragen.)

2. Extras - Optionen - Pfade - Sicherungskopien. Da werden die Sicherungskopien gespeichert

Gruß

acco