Base-Formulare: Reihenfolge der Ereignisse beim Speichern

Liebe Liste,

ich habe ein recht komplexes Formular, das mit einem Speicherbutton
versehen ist, der direkt nach dem Speichern ein weiteres Abspeichern per
Makro ablaufen lassen soll. Unter OOo 3.1.1 hat das immer reibungslos
geklappt.
Der Button macht die Aktion "Speichern" (eingestellt in den
Eigenschaften, Reiter allgemein), bei den Ereignissen ist "Maustaste
losgelassen" mit den anderen Speicherroutinen verbunden, die unabdingbar
eine vorherige Speicherung benötigen.
Leider wird diese Reihenfolge nicht (mehr) eingehalten. Bei den Makros
erscheint immer wieder "ungültiger Cursor-Status", weil das Feld, auf
das sich die weitere Speicherroutine beziehen soll, wohl noch gar nicht
existiert. Auch ein längeres Halten der Maustaste bringt keinen Erfolg.
Nur das Schließen des Formulars und anschließendes neues Öffnen macht es
möglich, endlich einen Datensatz (als Update der vorherigen Speicherung)
vollständig abzuspeichern.

Meine Frage: Welche Aktion, verknüft mit einem Speicher-Button, findet
erst nach dem eigentlichen Abspeichern statt - wenn nicht "Maustaste
losgelassen"?

Gruß

Robert

Hi Robert

Liebe Liste,

ich habe ein recht komplexes Formular, das mit einem Speicherbutton
versehen ist, der direkt nach dem Speichern ein weiteres Abspeichern per
Makro ablaufen lassen soll. Unter OOo 3.1.1 hat das immer reibungslos
geklappt.
Der Button macht die Aktion "Speichern" (eingestellt in den
Eigenschaften, Reiter allgemein), bei den Ereignissen ist "Maustaste
losgelassen" mit den anderen Speicherroutinen verbunden, die unabdingbar
eine vorherige Speicherung benötigen.
Leider wird diese Reihenfolge nicht (mehr) eingehalten. Bei den Makros
erscheint immer wieder "ungültiger Cursor-Status", weil das Feld, auf
das sich die weitere Speicherroutine beziehen soll, wohl noch gar nicht
existiert. Auch ein längeres Halten der Maustaste bringt keinen Erfolg.
Nur das Schließen des Formulars und anschließendes neues Öffnen macht es
möglich, endlich einen Datensatz (als Update der vorherigen Speicherung)
vollständig abzuspeichern.

Meine Frage: Welche Aktion, verknüft mit einem Speicher-Button, findet
erst nach dem eigentlichen Abspeichern statt - wenn nicht "Maustaste
losgelassen"?

ich weiß es nicht.
Der Status der Reihenfolge ist vermutlich "undefined". Auch das "Speichern" erfolgt wohl erst beim Loslassen. Dies ist der übliche Weg, damit man noch abbrechen kann (siehe Klick auf Browserlink etc.).
Aber warum nimmst Du nicht *ein* Ereignis (speicherst einfach das Formular mit einem Befehl und führst danach die Makros aus)?

Gruß bis Dienstag
Peter

Hallo Peter,

ich weiß es nicht.

Ich weiß auch nicht, wo der Unterschied zu OOo 3.1.1 liegt. Vielleicht
in dem Vorgehen, dass jetzt (endlich) nicht einfach abgespeichert wird,
wenn irgendwo auf dem Formularhintergrund ein Klick erfolgt?

Der Status der Reihenfolge ist vermutlich "undefined". Auch das
"Speichern" erfolgt wohl erst beim Loslassen. Dies ist der übliche Weg,
damit man noch abbrechen kann (siehe Klick auf Browserlink etc.).
Aber warum nimmst Du nicht *ein* Ereignis (speicherst einfach das
Formular mit einem Befehl und führst danach die Makros aus)?

Ich habe jetzt eine Korrektur im Makro angebracht:
  oForm_1.moveToInsertRow()
Diese Cursorbewegung war vorher (3.1.1) nicht notwendig. Ohne sie kommt
bei Libre aber immer wieder der ungültige Cursorstatus. Das liegt
vermutlich an der sehr speziellen Konstruktion: Ich lasse die Daten des
Formulars zuerst in eine gemeinschaftliche Tabelle schreiben, die vorher
geleert wird. Und nur bei so einer geleerten Tabelle, wo der
einzufügende Datensatz der 1. Datensatz ist, erhalte ich die Meldung
"ungültiger Status". Die Daten dieser Tabelle werden dann entsprechend
nachher auf die Grundtabellen verteilt.

So wie es zur Zeit läuft geht das (jetzt) für mich besser: Ich habe in
den Makros natürlich auch Fehlermeldungen stecken, falls im Formular
Eingaben fehlen.

Vielleicht hätte ich längst auf meine Mail hin schreiben sollen - ich
dachte allerdings auch nicht, dass überhaupt noch jemand darauf antwortet.

Gruß

Robert