Autor Thema: @if / @length liefert nicht das gewünschte Ergebnis  (Gelesen 5020 mal)

Offline Darkwingt

  • Frischling
  • *
  • Beiträge: 10
Hallo,

ich möchte ein Formular nach der Eingabe mit Querysave überprüfen und ggf. eine Meldung ausgeben.

Mit dieser Formel sollte die entsprechende Meldung ausgegeben werden, aber auch nach der Eingabe eines laaaangen Textes erscheint kein Hinweis.
Wenn ich als Bedingung ein leeres Feld abfrage( = "") erscheint brav die Meldung.

@If(@Length(txtBetreff_TM52) > 80 ;
    @Do(@Prompt([Ok];"der Betreff darf maximal 80 Zeichen lang sein");
    @Return(""))
;"")

hat jemand eine Idee wo der Fehler liegen könnte - es sollte mit der Formelsprache umgesetzt werden

Danke schonmal fürs Schauen

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #1 am: 26.09.13 - 17:37:49 »
Warum nicht einfach über die Eingabevalidierung abhandeln?
Code
@If(@Length(@ThisValue) > 80 ; @Failure("der Betreff darf maximal 80 Zeichen lang sein"); @Success)

Wenn es unbedingt über Querysave sein muss, dann vielleicht so:
Code
@If(@Length(txtBetreff_TM52) > 80 ; @Return(@Prompt([Ok] ; "Fehler" ; "der Betreff darf maximal 80 Zeichen lang sein")) ; "")

Gruß Stefan
« Letzte Änderung: 26.09.13 - 17:43:27 von cebolina »
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Darkwingt

  • Frischling
  • *
  • Beiträge: 10
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #2 am: 26.09.13 - 17:44:37 »
Weil ich alle Überprüfungen zusammenfassen und an einer Stelle pflegen möchte  :).

Danke schon mal für den Lösungsansatz!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #3 am: 26.09.13 - 17:45:30 »
@Prompt ([OK]; "Titel"; "Text")

erwartet zwei Parameter, Du hast nur einen

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #4 am: 26.09.13 - 17:51:32 »
Weil ich alle Überprüfungen zusammenfassen und an einer Stelle pflegen möchte
Grundsätzlich ist das auch der richtige Ansatz.
ABER, ob du da mit Formel glücklich wirst, wage ich zu bezweifeln.

Hier im Forum gibt es einige Ansätze - allerdings in Script.
Such mal nach "Validierung"

Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #5 am: 26.09.13 - 18:29:26 »
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).
« Letzte Änderung: 26.09.13 - 18:35:39 von Peter Klett »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #6 am: 26.09.13 - 20:19:27 »
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" ...

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
@if / @length liefert nicht das gewünschte Ergebnis
« Antwort #7 am: 26.09.13 - 22:49:56 »
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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #8 am: 26.09.13 - 23:41:11 »
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

Offline Darkwingt

  • Frischling
  • *
  • Beiträge: 10
Re: @if / @length liefert nicht das gewünschte Ergebnis
« Antwort #9 am: 27.09.13 - 08:36:18 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz