Datensatzänderung Bestätigen [gelöst]

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Datensatzänderung Bestätigen [gelöst]

Re: Datensatzänderung Bestätigen

von Cyklista » Mo, 29.12.2014 13:43

Vielen Dank! :)
Was mich allerdings stört ist die Fehlermeldung, dass kein Datensatz geändert wurde.
Das gleiche hatte ich mit der "Originalversion" vomn dem Makro.
Die taucht auf, wenn ich mit der Navigationsleiste arbeite. Beim normalen navigieren mit dem Tabulator innerhalb des Tabellenkontrollfeldes gibt es hier aber keine Probleme
Auch, wenn man innerhalb des Formulars Schalfächen für "vor", "zurück" und "speichern" einfügt, gibt es diese Fehlermelduing nicht.

Gruß

Przemek

Re: Datensatzänderung Bestätigen

von RobertG » Mo, 29.12.2014 08:36

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
Dateianhänge
Speichern_abbrechen.odb
Abbruch des Speicherns auf Nachfrage
(12.62 KiB) 164-mal heruntergeladen

Re: Datensatzänderung Bestätigen

von Cyklista » So, 28.12.2014 22:29

Danke für die Antwort.
Was kann ich dafür, dass mein Wissensstand mit der Zeit auch zunimmt ...
Nichts. :D

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 ...
kommen müssen, damit es klappt. Ich haabe verschiedenes ausprobiert und das Ergebnis war immer so, wie ich schon obern beschrieben habe.

Gruß
Przemek

Re: Datensatzänderung Bestätigen

von RobertG » So, 28.12.2014 20:43

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:

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

Robert

Re: Datensatzänderung Bestätigen

von Cyklista » So, 28.12.2014 18:33

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

Re: Datensatzänderung Bestätigen

von Cyklista » So, 28.12.2014 18:15

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:
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.
Spiekt es keine Rolle?

Re: Datensatzänderung Bestätigen

von RobertG » So, 28.12.2014 16:26

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

Re: Datensatzänderung Bestätigen

von Cyklista » So, 28.12.2014 13:55

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 -
use event before record change
) verbunden.
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

von F3K Total » So, 28.12.2014 09:02

Moin,
guckst Du hier, funktioniert.
R

Datensatzänderung Bestätigen [gelöst]

von Cyklista » So, 28.12.2014 01:44

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

Nach oben