Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Silent_Bob am 29.08.03 - 15:26:09

Titel: finde den fehler nicht
Beitrag von: Silent_Bob am 29.08.03 - 15:26:09
hallo zusammen,

in einem formular in einer datenbank wird bei lieferanten auf inland oder ausland geprüft.
befindet sich der lieferan im ausland, muß im feld "land" das entsprechende land angewählt werden und bei der bankverbindung die gültige IBAN nummer angegeben werden. Dabei prüfe ich ja nach land auf die anzahl der eingegebenen stellen im feld "iban". im prinzip klappt das auch, aber ich schaffe es nicht im feld der IBAN nummer die ganzen formeln unterzubringen.

im moment sieht die eingabevalidierung so aus:


@If(
(ausland="Ausland" & land="Belgien" & @length(iban) <> 16);
@Failure("Die Länge der IBAN Nummer stimmt nicht. Für Belgien muss die IBAN exakt 16 Stellen lang sein");
@Success);
@If(
(ausland="Ausland" & land="Dänemark" & @length(iban) <> 18);
@Failure("Die Länge der IBAN Nummer stimmt nicht. Für Dänemark muss die IBAN exakt 18 Stellen lang sein");
@Success);
@If(
(ausland="Ausland" & land="England" & @length(iban) <> 22);
@Failure("Die Länge der IBAN Nummer stimmt nicht. Für England muss die IBAN exakt 22 Stellen lang sein");
@Success);

das klappt aber nicht. in diesem fall kann ich trotzdem bei "belgien" und "dänemark" falsche nummern eingeben. die formel ignoriert das. im fall von "england" klappt das aber.

was mache ich falsch?

danke im voraus
Titel: Re:finde den fehler nicht
Beitrag von: Jörg Barth am 29.08.03 - 15:44:33
Deine letzte IF-Anweisung (die mit Land "England") liefert, wenn Land Dänemark oder Belgien ist, als letzte Anweisung ein @Success zurück. Du solltest die IF-Anweisungen schachteln.

Gruß Jörg
Titel: Re:finde den fehler nicht
Beitrag von: Silent_Bob am 29.08.03 - 15:46:20
wie meinst du das?
kannst du mir ein beispiel geben?
Titel: Re:finde den fehler nicht
Beitrag von: Doc Torte am 29.08.03 - 15:48:58
so ists geschachtelt...


@If(
(ausland="Ausland" & land="Belgien" & @length(iban) <> 16);
@Failure("Die Länge der IBAN Nummer stimmt nicht. Für Belgien muss die IBAN exakt 16 Stellen lang sein");
(ausland="Ausland" & land="Dänemark" & @length(iban) <> 18);
@Failure("Die Länge der IBAN Nummer stimmt nicht. Für Dänemark muss die IBAN exakt 18 Stellen lang sein");
(ausland="Ausland" & land="England" & @length(iban) <> 22);
@Failure("Die Länge der IBAN Nummer stimmt nicht. Für England muss die IBAN exakt 22 Stellen lang sein");
@Success)
Titel: Re:finde den fehler nicht
Beitrag von: Jörg Barth am 29.08.03 - 15:52:14
@if(ausland="Ausland";
@if(land="Belgien"&@length(iban)<>16;@failure("...");
@if(land="Dänemark"&@length(iban)<>18;@failure("...");
@if(land="England"&@length(iban)<>22;@failure("...");
@success)))
;@success)

So ungefähr (hab jetzt nicht alle Klammern am Ende gezählt).
Auf jeden Fall siehst Du, daß die Prüfung für Dänemark im Else-Teil der IF-Anweisung für Belgien steht.
So "überschreibt" die Überprüfung für England nicht mehr den Fehler für Belgien...

Gruß Jörg
Titel: Re:finde den fehler nicht
Beitrag von: Silent_Bob am 29.08.03 - 15:54:54
achso, jetzt raff ich das.

okay, vielen dank,

aber jetzt mal im allgemeinen:

bewirkt ein @Success nicht nur das ende EINER formel? er hätte doch komplett die erste if-prüfung durchgehen müssen.
danach hinter dem @Success hätte er doch die nächste if prüfung durchführen müssen und immer so weiter, weil ich doch die prüfungen mit ";" getrennt habe.

oder sehe ich das falsch?
Titel: Re:finde den fehler nicht
Beitrag von: Jörg Barth am 29.08.03 - 15:58:56
Nehmen wir Belgien:
Du hast Belgien und eine IBAN mit Länge 1.
Dein erstes IF liefert als Ergebnis @failure("...").
Jetzt wird die nächste IF-durchgeführt.
Land ist nicht "Dänemark" also liefert Dein IF @success.
Nächstes IF dito.
Bleibt am Schluss als letztes Ergebnis ein @success übrig.
Und das gewinnt...

Gruß Jörg
Titel: Re:finde den fehler nicht
Beitrag von: Doc Torte am 29.08.03 - 16:00:18
...ich denke, wenn in einer Validierung das @success auftaucht ist für Notes eben alles success...
auch ist bei der Verschachtelung wie ich sie gemacht habe ein wenig bessere Übersicht, daran sollte man auch beim entwickeln denken, es gibt ja auch noch Kollegen die vielleicht an der Datenbank mal rumschrauben müssen.
...und es spart viel Zeit...


das coding von Jörg ist etwas volltständiger, da die Validierung nur stattfindet, wenn das Feld ausland auch ausland ist.
Titel: Re:finde den fehler nicht
Beitrag von: Silent_Bob am 29.08.03 - 16:01:11
 :o

jetzt geht mir ein licht auf...

okay, nu hab ichs verstanden.

danke und schönes wochenende.