Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Okken am 19.01.09 - 15:24:56

Titel: Feldvalidierungen zusammenfassen
Beitrag von: Okken am 19.01.09 - 15:24:56

Hallo zusammen,

ich hätte als "Entwickler-Newbie" :) mal eine Frage zur Feldvalidierung (Notes 6.5.5).

Wenn ich vor der Speicherung eines Dokuments Feldwerte prüfen will, kann ich das ja über die Eingabevalidierung des entsprechenden Feldes machen, z.B. in einem Feld "Endedatum" mit 

@If ( Endedatum < Startdatum ;
    @Failure ("Bitte überprüfen Sie den Beginn und das Ende des Zeitraums.") ;
  @Success )

ggf. mit einem zusätzlichen @IsDocBeingSaved in der Bedingung, falls erst beim Speichern geprüft werden soll.

Meine Überlegung ist nun, bei Masken mit vielen Feldern die in Abhängigkeit zuein- ander geprüft werden sollen, der Übersichtlichkeit halber alle Validierungsformeln in einem zusätzlichen (verborgenen) Feld am Maskenende zusammenzufassen, also

@If ( Bedingung1 ;
    @Return ( @Failure ("...") ) ;
      Bedingung2 ;
    @Return ( @Failure ("...") ) ;
      Bedingung3 ;
    @Return ( @Failure ("...") ) ;
  @Success )

Spricht irgend etwas gegen diese Vorgehensweise, bzw. hat einer der "alten Hasen" hier mit einem ähnlichen Konstrukt vielleicht schonmal Probleme gehabt?

Bin leider in Lotusscript (noch) nicht so fit und kann die Abfragen mangels eines Äquivalents zu "continue = false" in der Formelsprache nicht ins Querysave schreiben...

Vorab schon mal danke, tolles Forum hier!

Jochen
Titel: Re: Feldvalidierungen zusammenfassen
Beitrag von: it898ur am 19.01.09 - 15:29:32
Hallo Jochen,

normalerweise springt Notes bei einem Fehler in das feld, welches den Fehler provoziert hat - dies würde bei einem versteckten Feld am Ende nicht funktionieren !

Gruß

André
Titel: Re: Feldvalidierungen zusammenfassen
Beitrag von: Thomas Schulte am 19.01.09 - 16:27:11
Zum einen kannst du bei !!HELP!! nachschauen wie man so etwas lösen kann (Scripttechnisch). Was eines der möglichen Probleme angeht gugst du hier (http://welovenotesbut.com/blog/?p=14#more-14).

Zum anderen gibt es auch in der Formelsprache eine Möglichkeit zu einem bestimmten Feld zu springen ...
@Command([EditGoToField];"Feldname");
Dazu musst du nur deine Formelroutine ein wenig " verbiegen ".
Titel: Re: Feldvalidierungen zusammenfassen
Beitrag von: LotusMen am 19.01.09 - 22:08:54
Hallo Jochen,

dieses Problem löst du am Effektivsten, wenn du die betreffenden Felder nacheinander und/oder in Abhängigkeiten von Feldern im Quersave der Maske über LScript abfragst.

Mfg. Uwe
Titel: Re: Feldvalidierungen zusammenfassen
Beitrag von: koehlerbv am 20.01.09 - 00:05:21
Uwe a.k.a "LotusMänner",

Jochen hatte oben geschrieben, das er mit LotusScript noch nicht so kann. Oder eigentlich gar nicht.

Bernhard
Titel: Re: Feldvalidierungen zusammenfassen
Beitrag von: koehlerbv am 20.01.09 - 00:27:43
Hallo Jochen,

der allererste Ratschlag muss natürlich lauten: Lerne die Basics von LotusScript. Es ist gar nicht so schwer, eine wirklich saubere Routine zur Prüfung von "mandatory fields" zu schreiben. Anderseits: Schreibe es selber und verwende *niemals* Code, den Du nicht sicher verstanden hast.

Eine zusammengefasste Prüfung für diverse Felder ist auch in Formelsprache möglich, nur eben nicht so komfortabel wie mit LS (es sei denn, ich habe jetzt etwas vergessen - von 1992 bis ca. 1996 blieb mir ja auch keine andere Möglichkeit  ;)).

Was nicht geht: Du kannst keine UI-Commands (also Commands wie @Command [EditGotoField]; "SeinFeldname")) verwenden. Userfreundlich ist das nicht.

Was aber wirklich geht:
Es muss ein bearbeitbares Feld sein, was aber versteckt ist. Eine denkbare Formel wäre dann
Code
@If (Subject = "";
	@Failure ("Fehler in Subject!");
	Content = "";
	@Failure ("Fehler in Content!");
@Success)

Irgendwie schwirrt mir da noch die Erinnerung an eine verbesserte Variante durch den Hinterkopf, aber das ist halt ben weit mehr als zehn Jahre her, als man das noch wirklich brauchte.
Nochmals: Beschäftige Dich mit LotusScript. Oder buche ein "Training on the job" (Du hast ein Problem, das wird gelöst, während Du LS lernst - die effektivste Methode für Dich und Deine Organisation).

Was Du auf jeden dann aber nicht machen solltest: LS-Überprüfung und QuerySave und @Failure in Eingabevalidierungen - das führt zu doppelten und damit unnötigen, verwirrenden Meldungen.

HTH,
Bernhard

PS: Auch, wenn das jetzt Eigenwerbung ist - ich biete gerne und erfolgreich "Trainings on the job" an. Das ist für beide Seiten der anstrengendere, aber auch extrem erfolgreiche Weg.
Titel: Re: Feldvalidierungen zusammenfassen
Beitrag von: Okken am 20.01.09 - 09:13:00

Danke euch allen,

langfristig wirds wohl sowieso auf Lotusscript hinauslaufen. Eine Schulung ist auch schon geplant, dauert halt noch ein bisserl...

Werd mal sehen, inwieweit ich mich bis dahin in LS hineinfuchse (bin Quereinsteiger ohne großartige Programmiersprachenkenntnisse).

Jochen