Autor Thema: Validierungsformel  (Gelesen 2455 mal)

Offline s.berger

  • Aktives Mitglied
  • ***
  • Beiträge: 128
Validierungsformel
« am: 21.09.07 - 14:23:54 »
Ich bekomme es leider nicht hin! Im Textfeld "id" soll kein doppelter Wert erscheinen. Da dachte ich, folgende Formel bei der Eingabevalidierung zu nehmen.

Code
double_id:=@DbLookup("":"NoCache";"";"(ids)";@LowerCase(id);1);
@If((id = "") | (@LowerCase(id) = double_id);@Failure("Bitte korrektes Kürzel eingegeben!");@Success);

Wenn die beiden Fälle der @If Bedingung eintreten, ist alles ok. Aber wenn double_id @IsError ist, kommt "Feld hat Validierungsformel nicht entsprochen". Was mache ich falsch?

Danke im voraus.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Validierungsformel
« Antwort #1 am: 21.09.07 - 14:34:31 »
Mach einen [Failsilent], dann liefert er dir in diesem Fall wenn er nix findet einen leeren wert zurück. Der ist ja dann legitim .....
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline s.berger

  • Aktives Mitglied
  • ***
  • Beiträge: 128
Re: Validierungsformel
« Antwort #2 am: 21.09.07 - 14:42:07 »
Danke, das hat geholfen.
Nur mal so, was würde man unter Notes 5 machen, als es noch kein [failsilent] gab?

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Validierungsformel
« Antwort #3 am: 21.09.07 - 14:48:48 »
@isError gabs auch schon zu R5er zeiten

also so:
Code
double_id:=@DbLookup("":"NoCache";"";"(ids)";@LowerCase(id);1);
idok:= @IF(@IsError(double_id); @False;
             @LowerCase(id) = double_id);
@If((id = "") | (idok);@Failure("Bitte korrektes Kürzel eingegeben!");@Success)
pete(r)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Validierungsformel
« Antwort #4 am: 21.09.07 - 14:59:28 »
einen DBLookup nicht auf @IsError abzufragen ist ganz schlechter Programmierstil...
Das führt nämlich im dümmsten Fall dazu, dass Du Dokumente gar nicht mehr aufmachen kannst, weil der Fehler beim DBLookup das verhindert.

Failsilent nehme ich auch manchmal, das ist aber immer dann nervig, wenn der DBLookup nicht das zurückliefert was Du erwartest, und Du "debuggen" willst: Dann musst Du immer erst mal das Failsilent als Parameter entfernen, um zu sehen, was schief läuft.

In Deinem Beispiel würde das so aussehen:

double_id:=@DbLookup("":"NoCache";"";"(ids)";@LowerCase(id);1);
@If(@IsError( double_id ) ; @Success ; (id = "") | (@LowerCase(id) = double_id);@Failure("Bitte korrektes Kürzel eingegeben!");@Success);

ABER: Dein Konzept hat einen Schwachpunkt. Es funktioniert nur für neue Dokumente. Wenn Du versuchst, ein bestehendes Dokument erneut zu speichernn, wirst Du immer den @Failure kriegen, weil das Dokument sich per Lookup selbst findet...

Gruß
Tode
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 s.berger

  • Aktives Mitglied
  • ***
  • Beiträge: 128
Re: Validierungsformel
« Antwort #5 am: 21.09.07 - 15:09:13 »
double_id:=@DbLookup("":"NoCache";"";"(ids)";@LowerCase(id);1);
@If(!@IsNewDoc;@Success;@IsError(double_id);@Success;id = "";@Failure("Bitte ein Kürzel eingeben!");@LowerCase(id) = double_id;@Failure("Kürzel ist schon vorhanden!");@Success)

So geht's auch für neue Dokumente. Danke nochmal.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz