BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Datensatzänderung überprüfen
Datensatzänderung überprüfen
Hallo liebes Forum:
Eine sehr kurze Frage, zu der ich leider mit Stichwortsuche nichts gefunden habe.
Bin noch relativ neu in Libre.
Gibt es ein Event oder ja etwas in der Art, mit dem man überprüfen könnte, ob ein Dokument (vorzugsweise ein Datensatz in Base) geändert wurde?
Ich möchte eine Abfrage mit anschließender Speicherung des Datensatzes realisieren, wenn dieser geändert wurde. Da Libre dies ja dokumentiert (man bekommt ja eine solche Meldung auch angezeigt, wenn man das Formular schließt), sollte man ja irgendwie darauf zugreifen können.
Momentan ist das Problem, dass immer nur der Datensatz gespeichert wird, der beim schließen ausgewählt wurde. Ich möchte aber auch nicht einfach stumpf jeden Datensatz speichern beim Datensatzwechsel.
Ich hoffe ihr könnt mir helfen : )
Beziehungsweise: Wie kann ich die vorprogrammierten Button-Aktionen (Datensatz löschen/einfügen/speichern) mit meinem Makro mit dem Event "Aktion bestätigen" abbrechen?
Vielen Dank im Voraus
Eine sehr kurze Frage, zu der ich leider mit Stichwortsuche nichts gefunden habe.
Bin noch relativ neu in Libre.
Gibt es ein Event oder ja etwas in der Art, mit dem man überprüfen könnte, ob ein Dokument (vorzugsweise ein Datensatz in Base) geändert wurde?
Ich möchte eine Abfrage mit anschließender Speicherung des Datensatzes realisieren, wenn dieser geändert wurde. Da Libre dies ja dokumentiert (man bekommt ja eine solche Meldung auch angezeigt, wenn man das Formular schließt), sollte man ja irgendwie darauf zugreifen können.
Momentan ist das Problem, dass immer nur der Datensatz gespeichert wird, der beim schließen ausgewählt wurde. Ich möchte aber auch nicht einfach stumpf jeden Datensatz speichern beim Datensatzwechsel.
Ich hoffe ihr könnt mir helfen : )
Beziehungsweise: Wie kann ich die vorprogrammierten Button-Aktionen (Datensatz löschen/einfügen/speichern) mit meinem Makro mit dem Event "Aktion bestätigen" abbrechen?
Vielen Dank im Voraus
Re: Datensatzänderung überprüfen
Hallo Alletkla,
hast Du Dir schon im Handbuch, ca. S. 480, das Kapitel "Abspeichern mit Nachfrage" angesehen?
Gruß
Robert
hast Du Dir schon im Handbuch, ca. S. 480, das Kapitel "Abspeichern mit Nachfrage" angesehen?
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: Datensatzänderung überprüfen
Habe ich, da wird aber vorausgesetzt, dass die Speicherroutine von Libre bereits ausgelöst wurde.
Mein Problem besteht aber darin zu entscheiden OB diese ausgelöst werden soll.
Mit
liefert nun das gewünschte "ja". Mit dem ich die Infos aus dem Handbuch benutzen kann.
Gibt es eine Möglichkeit, wie man allen steuerlementen das gleiche Marko zuweisen kann?
Ich habe über 30 Steuerelemente auf der Form, denen ich jetzt einzeln "Datensatzaktion_erzeugen" zuweisen müsste :///
Mein Problem besteht aber darin zu entscheiden OB diese ausgelöst werden soll.
Code: Alles auswählen
Sub checkkaenderung(Doc as Object) as Boolean
' Dim oForm2 as OBject
' oForm2 = ThisDatabaseDocument.formdocuments.getByName("Eingabe Bilddaten Ortsarchiv")
If oForm2.isModified = True then
Msgbox("ja")
Else
Msgbox("nein")
End If
End Sub
Sub Datensatzaktion_erzeugen(oEvent as Object)
oForm2.isModified = True
End Sub
Code: Alles auswählen
oForm2 = ThisComponent.drawpage.forms.getByName("Eingabe Bilddaten Ortsarchiv")
Gibt es eine Möglichkeit, wie man allen steuerlementen das gleiche Marko zuweisen kann?
Ich habe über 30 Steuerelemente auf der Form, denen ich jetzt einzeln "Datensatzaktion_erzeugen" zuweisen müsste :///
Re: Datensatzänderung überprüfen
Desweiteren besteht das Problem, dass das Formular anders reagiert, wenn das Makro in "Echtzeit" läuft, als wenn ich ich es im EinzelschirttModus durchlaufen lasse
Ein Feld, dass bearbeitet wurde, füllt sich automatisch wieder mit dem Ausgangswert, wenn sichg eine Msgbox öffnet. Im Einzelschirtt-Modus pasiert dies nicht
Ein Feld, dass bearbeitet wurde, füllt sich automatisch wieder mit dem Ausgangswert, wenn sichg eine Msgbox öffnet. Im Einzelschirtt-Modus pasiert dies nicht
Re: Datensatzänderung überprüfen
Hallo Alletkla,
ja, das Makro ist an das Formular gebunden, nicht an einzelne Buttons. Es bricht dann gegebenenfalls die Speicherung ab. Was möchtest Du denn erreichen?
Gruß
Robert
ja, das Makro ist an das Formular gebunden, nicht an einzelne Buttons. Es bricht dann gegebenenfalls die Speicherung ab. Was möchtest Du denn erreichen?
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: Datensatzänderung überprüfen
Ich habe dieses Forumlar. Wenn ich hier in irgendeinem Feld etwas ändere wird folgendes ausgelöst:
Code: Alles auswählen
Sub Datensatzaktion_erzeugen(oEvent as Object)
oForm2.isModified = True
'oevent.source.model.commit(true)
End Sub
Code: Alles auswählen
Dim Mskboxres as Integer
Select Case oEvent.Source.ImplementationName
Case "com.sun.star.comp.forms.ODatabaseForm"
'MsgBox oEvent.Source.ImplementationName
If oForm2.isModified = True Then
Dim oFormFeature as Object
msgboxres = Msgbox("Wirklich speichern?",3)
Select Case Msgboxres
Case 6
oForm2.updateRow()
MSgbox("Datensatz " & oform2.getbyname("txtArchivnummer").text & " Gespeichert")
Case Else
oFormFeature = com.sun.star.form.runtime.FormFeature
oFormView= oDoc2.currentcontroller.getFormController(oform2)
oFormView.FormOperations.execute(oFormFeature.UndoRecordChanges)
End Select
Else
End If
Case "org.openoffice.comp.svx.FormController"
End Select
ABER:
Sobald sich die Msgbox mit "Wirklich speichern" öffnet, ist die Änderung zurückgesetzt. und ich verstehe nicht wieso.
Habe es bereits mit "commit" versucht, dies brachte mir in einem anderen Projekt den Erfolg, als es ums speichern ging.
Funktioniert allerdings auch nicht
Merkwürdig ist allerdings, wenn ich in Basic einen Haltepunkt an den Anfang der Prozedur mache und mit Einzelschritt weiter mache, bleiben die Änderungen erhalten, allerdings speichert "updateRow()" nichts in den Datensatz und sobald der Datensatz verlassen wird, sieht man den Ausgansgzustand wieder.
Das Problem scheint also irgendwie an der Übergabe zu irgendeinem Controller zu liegen.
EDIT: Okay das Problem tritt auf, wenn die Msgbox aufgerufen wird. Kommatiert man diese aus, wird richtig gespeichert und die Änderungen bleiben auch erhalten, allerdings würde ich diese Abfrage schon gerne realisieren.
Re: Datensatzänderung überprüfen
Hallo Alletkla,
wenn Du bei jedem Feld die Datensatzaktion erst einmal dem Formular mitteilen musst, dann stimmt doch irgendetwas an dem Formular nicht. So etwas mache ich nur, wenn ich die Felder, in denen sich etwas abspielt, nicht mit der Datenquelle verbunden habe (im Handbuch z.B. bei der Nutzung von Kombinationsfeldern als "editierbaren Listenfeldern").
Gruß
Robert
wenn Du bei jedem Feld die Datensatzaktion erst einmal dem Formular mitteilen musst, dann stimmt doch irgendetwas an dem Formular nicht. So etwas mache ich nur, wenn ich die Felder, in denen sich etwas abspielt, nicht mit der Datenquelle verbunden habe (im Handbuch z.B. bei der Nutzung von Kombinationsfeldern als "editierbaren Listenfeldern").
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: Datensatzänderung überprüfen
Aus mir nicht erklärlichen Gründen funktioniert es nicht, dass er erkennt, wenn etwas geändert wurde.
Vielleicht liegt es am Import aus Access? Habe es aber auf Jeden Fall nun so gelöst.
Das Problem beim Fall oben war, dass das "Undo" im Else Case stand, aus irgendeinem Grund überspringt er die Msgbox einfach und arbeitet das MAkro ab, obwohl noch keine Rückmeldung durch die MSgbox erfolgt ist.... dadruch werden die Änderungen Rückgangig gemacht, habe das nun einfach in ein spezielles Case geschoben.
Vielleicht liegt es am Import aus Access? Habe es aber auf Jeden Fall nun so gelöst.
Das Problem beim Fall oben war, dass das "Undo" im Else Case stand, aus irgendeinem Grund überspringt er die Msgbox einfach und arbeitet das MAkro ab, obwohl noch keine Rückmeldung durch die MSgbox erfolgt ist.... dadruch werden die Änderungen Rückgangig gemacht, habe das nun einfach in ein spezielles Case geschoben.
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️