Domino 9 und frühere Versionen > ND7: Entwicklung
Validierungsformel
s.berger:
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);
--- Ende Code ---
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.
Thomas Schulte:
Mach einen [Failsilent], dann liefert er dir in diesem Fall wenn er nix findet einen leeren wert zurück. Der ist ja dann legitim .....
s.berger:
Danke, das hat geholfen.
Nur mal so, was würde man unter Notes 5 machen, als es noch kein [failsilent] gab?
pete_bla:
@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)
--- Ende Code ---
Tode:
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
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln