Hallo Robert,
Makros, die an einer solchen Stelle wie deiner aufgerufen werden,
sollten als function mit einem Rückgabewert vom Typ boolean und nicht
als sub implementiert werden. Die Speicherung in der Datenbank erfolgt
nur, wenn TRUE zurückgegeben wird, bei Rückgabewert FALSE bleibt das
Formular im Zustand "geändert", man kann aufgrund der Meldung die
Fehleingabe verändern. Das ist ja doch wohl genau das, was du suchst.
Noch was: dieses Ereignis wird zweimal ausgelöst, im einen Fall steht
manches nicht zur Verfügung, was im Makro benötigt wird. Ich verwende
daher für Makros für dieses Ereignis immer zu Beginn:
if evt.source.supportsService("com.sun.star.sdbc.RowSet") then exit function
' Ereignis wird zweimal angestoßen. Ein Aufruf wird ignoriert
Gruß
Gerhard
Am 13.08.2018 um 11:59 schrieb Robert Großkopf:
Hallo *,
ich rechne zwar weniger mit einer Antwort, aber vielleicht gibt es ja
doch ein kleines Wunder ...
Ich bin dabei eine Datenbank zu erstellen, die zeigen soll, wie der
Inhalt von Formularen auf Validität überprüft werden kann. Das dazu
notwendige Makro habe ich an "Vor der Datensatzaktion" des Formulars
gebunden.
Wenn ich die richtige Implementation auswähle kann ich dort über
---------
oFormOperations = oForm.FormOperations
oFormOperations.execute(oFormFeature.UndoRecordChanges)
---------
die Eingabe stoppen (siehe auch Handbuch Base). Nur leider sind dann
sämtliche neuen Eingaben weg, das Formular also auf dem vorhergehenden
Stand und die Meldung "Keine Änderung vorhanden" erfolgt auch noch. Die
entsprechende Meldung, dass in bestimmten Feldern Inhalt fehlt kann ich
also getrost vergessen - jetzt fehlt er überall.
Gibt es irgendeine Möglichkeit, das Abspeichern zu unterbrechen ohne
dass gleich alle Neueingaben weg sind? Ich habe schon versucht, statt
UndoRecordChanges einfach wieder das aktuelle Formular über die
Zeilennummer aufzurufen. Dann lande ich aber leider in einer Schleife,
die mir immer wieder schön meine Meldung zu fehlenden Inhalten auf dem
Schirm bringt.
Gruß
Robert
--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme?
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy