Domino 9 und frühere Versionen > ND8: Entwicklung

@if / @length liefert nicht das gewünschte Ergebnis

<< < (2/2)

Peter Klett:
Ok, Stefan hat angefangen, dann will ich mich auch noch in die Grundsatzdiskussion einklinken.

Was Du derzeit machst, nenne ich die "BaFöG-Amt-Validierung". Warum?

Zu meinen Studienzeiten verhielt es sich mit BaFöG-Anträgen so:

Man füllt einen mega-langen Antrag aus und schickt den ein (damals kam der Postbote noch zu Pferd).

Nach einer nicht länger zu bezeichnenden Wartezeit kommt der Antrag mit dem Vermerk zurück:

"Angabe zum Einkommen des Vaters von Oktober fehlt".

Also nimmt man den Antrag und reicht ihn nun mit den gewünschten Angaben nochmals ein. Nach erneuter Wartezeit kommt der Antrag wieder zurück:

"Angabe zum Einkommen des Vaters von November fehlt".

Dieses Spiel konnte sich dann lange hinziehen, manchmal meinte ich, dass das BaFöG, was dann irgendwann tatsächlich ausgezahlt wurde, gerade mal die Portokosten für die dauernde Nachsenderei irgendwelcher Belege ausgeglichen hat.

Was will ich damit sagen? Hätten die damals den Antrag komplett durchgesehen und eine Liste aller fehlenden Unterlagen zurückgeschickt, hätte man den Prozess (möglicherweise unnötig) beschleunigen können.

Genauso verhält es sich mit einer Validierung im Stil

@If (Feld1 = ""; @Return (@Prompt ([OK]; "Fehler"; "Feld 1 ist leer"); "");
@If (Feld2 = ""; @Return (@Prompt ([OK]; "Fehler"; "Feld 2 ist leer"); "");
usw.

Der Benutzer erstellt ein Dokument und will es speichern. Es erscheint die Meldung, Feld 1 sei leer. Ok, schnell ausgefüllt und erneut gespeichert. Nun fehlt Feld 2, usw.. Wenn er dann irgendwann an eine Fehlermeldung kommt, zu der er andere Informationen benötigt, schlimmstenfalls welche, die er den gleichen Tag nicht beschaffen kann, wird vermutlich der Bildschirm das Gebäude durch das Fenster verlassen. Falls Du in der Nähe bist, wirst Du ggf. dem Schirm folgen.

Viel besser finde ich, wenn beim Speichern eine Liste sämtlicher Fehler aufgelistet wird, denn dann weiß der Benutzer, was er insgesamt benötigt. Natürlich kann es geschachtelte Fehlermeldungen geben, die abhängig von anderen Eingaben sind, das darf und muss natürlich berücksichtigt werden.

Die Standardvalidierung in den Notesfeldern arbeitet genau nach diesem Prinzip, erste Fehlermeldung, gleich Mittelfinger hoch, Ende des Prozesses. Deshalb habe ich die in diesem Jahrtausend noch nicht benutzt und werde es wohl auch nie wieder tun.

Am besten geht das natürlich mit Script, aber in Formel wäre es auch möglich. Wobei ich mir nicht sicher bin, ob ein @Return im Querysave das Speichern tatsächlich verhindert. Du hast das zwar geschrieben, wirklich glauben will ich das aber nicht. Im Script setzt man Continue auf False, dann wird nicht gespeichert.

Eine Formel könnte so aussehen (nicht probiert, nur so hingeschrieben)

_msg := ""
@If (Feld1 = ""; @Set (_msg;  _msg : "Feld 1 ist leer"); "");
@If (Feld2 = ""; @Set (_msg;  _msg : "Feld 2 ist leer"); "");

@If (_msg != ""; @Return (@Prompt ([OK]; "Folgende Fehler sind aufgetreten"; @Implode (@Trim (_msg); @Newline))); "")

Aber unbedingt prüfen, ob @Return das Speichern verhindert (oder besser, gleich in Script schreiben, auch wenn Du es noch nicht kannst, dann ist das der ideale Zeitpunkt, damit anzufangen).

koehlerbv:
Peter, volle Zustimmung, und das war eine sehr feine Erklärung.

Ich prophezeihe zudem, dass "BaFöG-Amt-Validierung" ähnlich Kult wird wie Dein genialer Spruch mit den "Kacheln" und den Fliesen im Bad  ;D
You made my day!

Bernhard

PS: Mit dem BaFöG-Ämtern scheint das - zumindest fallweise - auch heute noch so zu sein wie zu Deinen Zeiten. Da kriegst Du auch einen Antrag zurück, und wenn man dann hinrennt und sagt: "Aber hier ist doch das 'fehlende' Blatt", dann gibt es auch nur noch ein "Ach ja" ...

Tode:
Nur so nebenbei (weils noch keiner so explizit erwähnt hat, Peter hat nur eine Vermutung dahingehend geäussert): das querysave kann man mit formelsprache nicht abbrechen... Die meldung wird ausgegeben... Und dann wird trotzdem gespeichert... Ein Continue=False gibt es in Formelsprache in dem Kontext nicht.

Insofern ist dieser Ansatz nicht nur unschön, sondern gänzlich ungeeignet...

koehlerbv:
Doch, Torsten: Man kann das. Aber da ist so schräg und auch anfällig für ganz andere Nebenwirkungen (SaveOptions bleibt auf Ewigkeien auf "0"), dass ich diesen (fremden) Ansatz niemals schildern werde.
QuerySave -> LotusScript. Mehr dag ich nicht  ;)

Bernhard

Darkwingt:
Ich habe mich vorerst für die BaFöG-Amt-Validierung entschieden  ;D

Vielen Dank an alle für die schnelle Hilfe!



P.S. ich liebe Grundsatzdiskussionen

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln