Datensatzänderung Bestätigen [gelöst]
Moderator: Moderatoren
Datensatzänderung Bestätigen [gelöst]
Hallo!
Wenn ich einen bestehenden Datensatz in einem Formular korrigiere und anschließend den Datensatz wechsle bzw. eien neuen Datensatz anlege, dann werden die Korrekturen ohne Rückfrage übernommen. Mir wäre ws lieber, wenn ich vor dem Datensatzwechsel gefragt wäre, ob die Änderungen übernommen werden sollten. Lässt sich das irgedwie einstellen, oder ist dafür ein Makro notwendig?
Gruß
Przemek
Wenn ich einen bestehenden Datensatz in einem Formular korrigiere und anschließend den Datensatz wechsle bzw. eien neuen Datensatz anlege, dann werden die Korrekturen ohne Rückfrage übernommen. Mir wäre ws lieber, wenn ich vor dem Datensatzwechsel gefragt wäre, ob die Änderungen übernommen werden sollten. Lässt sich das irgedwie einstellen, oder ist dafür ein Makro notwendig?
Gruß
Przemek
Zuletzt geändert von Cyklista am Mo, 29.12.2014 13:55, insgesamt 1-mal geändert.
Re: Datensatzänderung Bestätigen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Datensatzänderung Bestätigen
Vielen Dank für die Antwort, aber es funktioniert irgendwie nicht ganz richtig.
Ich habe das ganze Makro aus dem letzten Beitrag übernommen und mit dem Ereignis "vor dem Datensatzwechsel" (Laut Anleitung im Kommentar -
Das Makro wird bei jedem Datensatzwechsel ausgeführt, auch wenn keine Änderungen vorgenommen wurden.
Es spielt keine Rolle, ob ich "ja" oder "nein" anklicke - die Änderungen werden immer übernommen.
Das Makro wird immer zweimal ausgeführt, wodurch das Formular zum übernächsten/vorletzten Datensatz überspringt.
(Das Letzte liegt wohl laut Base-Anleitung an OO/LO selbst. (Bug of feature? )
Nach der Verbindung des Makros mit dem Ereignis "Vor der Datensatzaktion" werden die Änderungen nicht übernommen falls "nein" gewählt wird" (es erscheint eine Fehlermeldung), aber auch hier wird das Makro zweimal bei jedem Datensatzwechsel ausgeführt.
Przemek
Ich habe das ganze Makro aus dem letzten Beitrag übernommen und mit dem Ereignis "vor dem Datensatzwechsel" (Laut Anleitung im Kommentar -
) verbunden.use event before record change
Das Makro wird bei jedem Datensatzwechsel ausgeführt, auch wenn keine Änderungen vorgenommen wurden.
Es spielt keine Rolle, ob ich "ja" oder "nein" anklicke - die Änderungen werden immer übernommen.
Das Makro wird immer zweimal ausgeführt, wodurch das Formular zum übernächsten/vorletzten Datensatz überspringt.
(Das Letzte liegt wohl laut Base-Anleitung an OO/LO selbst. (Bug of feature? )
Nach der Verbindung des Makros mit dem Ereignis "Vor der Datensatzaktion" werden die Änderungen nicht übernommen falls "nein" gewählt wird" (es erscheint eine Fehlermeldung), aber auch hier wird das Makro zweimal bei jedem Datensatzwechsel ausgeführt.
Przemek
Re: Datensatzänderung Bestätigen
Hallo Przemek,
wie Du nachher ganz richtig schreibst: "Vor der Datensatzaktion", nicht "Vor dem Datensatzwechsel". Vor der Datensatzaktion werden zwei unterschiedliche Implementationen durchgeführt. Die eine hat den Implementationsnamen:
org.openoffice.comp.svx.FormController
und
com.sun.star.comp.forms.ODatabaseForm
Du brauchst nur eine dieser Implementationen. Welche die für Dein Vorhaben passende ist steht ja in dem entsprechenden Makro. Hast Du nur eine der Implementationen ausgewählt und das Makro auch nur an "Vor der Datensatzaktion" gekoppelt, so müsste das Ganze tatsächlich nur einmal laufen.
Gruß
Robert
wie Du nachher ganz richtig schreibst: "Vor der Datensatzaktion", nicht "Vor dem Datensatzwechsel". Vor der Datensatzaktion werden zwei unterschiedliche Implementationen durchgeführt. Die eine hat den Implementationsnamen:
org.openoffice.comp.svx.FormController
und
com.sun.star.comp.forms.ODatabaseForm
Du brauchst nur eine dieser Implementationen. Welche die für Dein Vorhaben passende ist steht ja in dem entsprechenden Makro. Hast Du nur eine der Implementationen ausgewählt und das Makro auch nur an "Vor der Datensatzaktion" gekoppelt, so müsste das Ganze tatsächlich nur einmal laufen.
Gruß
Robert
Re: Datensatzänderung Bestätigen
Wie soll ich aber diese Implementatzion auswählen? Soll ich an dem Makro was ändern?
Übrigens habe ich auch das Makro aus dieser Seite ausprobiert: https://forum.openoffice.org/en/forum/v ... 13&t=68454
mit dem gleichen Ergebnis.
In beiden Fällen wird das Makro zum zweiten Mal ausgeführt, sobald ich mit dem Mauszeiger über einen der Schalter ">" oder "<" fahre (ohne ihn anzuklicken).
In dem Base handbuch ( https://wiki.documentfoundation.org/ima ... ig_V42.pdfsteht es auf der Seite 95:
Übrigens habe ich auch das Makro aus dieser Seite ausprobiert: https://forum.openoffice.org/en/forum/v ... 13&t=68454
mit dem gleichen Ergebnis.
In beiden Fällen wird das Makro zum zweiten Mal ausgeführt, sobald ich mit dem Mauszeiger über einen der Schalter ">" oder "<" fahre (ohne ihn anzuklicken).
In dem Base handbuch ( https://wiki.documentfoundation.org/ima ... ig_V42.pdfsteht es auf der Seite 95:
Spiekt es keine Rolle?Datensatzaktion: Dies ist z. B. das Abspeichern mittels Button. Im Test ergibt sich, dass diese Aktion regelmäßig doppelt erscheint, d. h. Makros werden direkt nacheinander zweimal abgearbeitet.
Re: Datensatzänderung Bestätigen
Ich habe eine Lösung gefunden:
Wenn ich anstatt der Verbindung des Makros mit dem Ereignis "Vor der Datensatzaktion" und der Verwendung der bestehenden Schalrter einge Buttons für "vor" , "zurück" und "speichern" hinztufüge und sdas Makro an diese Buttons anhänge (z.B. Ereignis "Maustaste gedrückt"), dann funktioniert alles einwandfrei.
Ich müsste noch die Standard-Schaltflächen ausblenden.
Gruß
Przemek
Wenn ich anstatt der Verbindung des Makros mit dem Ereignis "Vor der Datensatzaktion" und der Verwendung der bestehenden Schalrter einge Buttons für "vor" , "zurück" und "speichern" hinztufüge und sdas Makro an diese Buttons anhänge (z.B. Ereignis "Maustaste gedrückt"), dann funktioniert alles einwandfrei.
Ich müsste noch die Standard-Schaltflächen ausblenden.
Gruß
Przemek
Re: Datensatzänderung Bestätigen
Hallo Przemek,
der Eintrag in dem Base-Handbuch stammt von mir. Den muss ich wohl so langsam erweitern. Was kann ich dafür, dass mein Wissensstand mit der Zeit auch zunimmt ...
Ernsthaft: Ich habe auch erst jetzt heraus bekommen, welche Ereignisse dabei denn auftauchen und warum das eben bei der Abspeicherung doppelt passiert. Es handelt sich bei der doppelten Abarbeitung um zwei unterschiedliche Prozesse. Blende ich jetzt für ein Makro einen Prozess aus und nutze nur den anderen, dann kommt das Ereignis auch nur einmal vor.
Bei mir sieht das so aus:
Gruß
Robert
der Eintrag in dem Base-Handbuch stammt von mir. Den muss ich wohl so langsam erweitern. Was kann ich dafür, dass mein Wissensstand mit der Zeit auch zunimmt ...
Ernsthaft: Ich habe auch erst jetzt heraus bekommen, welche Ereignisse dabei denn auftauchen und warum das eben bei der Abspeicherung doppelt passiert. Es handelt sich bei der doppelten Abarbeitung um zwei unterschiedliche Prozesse. Blende ich jetzt für ein Makro einen Prozess aus und nutze nur den anderen, dann kommt das Ereignis auch nur einmal vor.
Bei mir sieht das so aus:
Code: Alles auswählen
SUB ZeileZwischenspeichern(oEvent AS OBJECT)
oForm = oEvent.Source
REM Das Ereignis wird von zwei unterschiedlichen Implementationen ausgelöst.
REM Nur das Ereignis mit dem ImplementationName com.sun.star.comp.forms.ODatabaseForm bietet Zugriff auf die Formularfelder.
IF InStr(oForm.ImplementationName, "ODatabaseForm") THEN
... mach dies und das, aber eben nur einmal ...
END IF
END SUB
Robert
Re: Datensatzänderung Bestätigen
Danke für die Antwort.
Aber von den "CASE IF"-Befehlen habe ich wenig Ahnung und weiss deswegen nicht, welche Zeilen aus dem vorgenannten Makro an die Stelle kommen müssen, damit es klappt. Ich haabe verschiedenes ausprobiert und das Ergebnis war immer so, wie ich schon obern beschrieben habe.
Gruß
Przemek
Nichts.Was kann ich dafür, dass mein Wissensstand mit der Zeit auch zunimmt ...
Aber von den "CASE IF"-Befehlen habe ich wenig Ahnung und weiss deswegen nicht, welche Zeilen aus dem vorgenannten Makro an die Stelle
Code: Alles auswählen
... mach dies und das, aber eben nur einmal ...
Gruß
Przemek
Re: Datensatzänderung Bestätigen
Hallo Przemek,
ich habe das jetzt einmal mit einem Beispiel durchgetestet. Bei mir kommt das Ereignis nur einmal. Was mich allerdings stört ist die Fehlermeldung, dass kein Datensatz geändert wurde. Die taucht auf, wenn ich mit der Navigationsleiste arbeite. Beim normalen navigieren mit dem Tabulator innerhalb des Tabellenkontrollfeldes gibt es hier aber keine Probleme.
Ich hänge das Beispiel einmal an.
Gruß
Robert
ich habe das jetzt einmal mit einem Beispiel durchgetestet. Bei mir kommt das Ereignis nur einmal. Was mich allerdings stört ist die Fehlermeldung, dass kein Datensatz geändert wurde. Die taucht auf, wenn ich mit der Navigationsleiste arbeite. Beim normalen navigieren mit dem Tabulator innerhalb des Tabellenkontrollfeldes gibt es hier aber keine Probleme.
Ich hänge das Beispiel einmal an.
Gruß
Robert
- Dateianhänge
-
- Speichern_abbrechen.odb
- Abbruch des Speicherns auf Nachfrage
- (12.62 KiB) 159-mal heruntergeladen
Re: Datensatzänderung Bestätigen
Vielen Dank!
Gruß
Przemek
Das gleiche hatte ich mit der "Originalversion" vomn dem Makro.Was mich allerdings stört ist die Fehlermeldung, dass kein Datensatz geändert wurde.
Auch, wenn man innerhalb des Formulars Schalfächen für "vor", "zurück" und "speichern" einfügt, gibt es diese Fehlermelduing nicht.Die taucht auf, wenn ich mit der Navigationsleiste arbeite. Beim normalen navigieren mit dem Tabulator innerhalb des Tabellenkontrollfeldes gibt es hier aber keine Probleme
Gruß
Przemek