Autor Thema: finde den fehler nicht  (Gelesen 3123 mal)

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
finde den fehler nicht
« 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

Offline Jörg Barth

  • Frischling
  • *
  • Beiträge: 49
  • is reported to Lotus Quality Engineering
Re:finde den fehler nicht
« Antwort #1 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

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re:finde den fehler nicht
« Antwort #2 am: 29.08.03 - 15:46:20 »
wie meinst du das?
kannst du mir ein beispiel geben?

Offline Doc Torte

  • Aktives Mitglied
  • ***
  • Beiträge: 178
  • Geschlecht: Männlich
  • ...promovierter Bäcker... ;-)
    • ...that's me
Re:finde den fehler nicht
« Antwort #3 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)
Wer nicht ständig besser wird, hört bald auf gut zu sein !
Schritt für Schritt geht's immer vorwärts...

Offline Jörg Barth

  • Frischling
  • *
  • Beiträge: 49
  • is reported to Lotus Quality Engineering
Re:finde den fehler nicht
« Antwort #4 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

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re:finde den fehler nicht
« Antwort #5 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?

Offline Jörg Barth

  • Frischling
  • *
  • Beiträge: 49
  • is reported to Lotus Quality Engineering
Re:finde den fehler nicht
« Antwort #6 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

Offline Doc Torte

  • Aktives Mitglied
  • ***
  • Beiträge: 178
  • Geschlecht: Männlich
  • ...promovierter Bäcker... ;-)
    • ...that's me
Re:finde den fehler nicht
« Antwort #7 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.
« Letzte Änderung: 29.08.03 - 16:03:04 von Doc Torte »
Wer nicht ständig besser wird, hört bald auf gut zu sein !
Schritt für Schritt geht's immer vorwärts...

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re:finde den fehler nicht
« Antwort #8 am: 29.08.03 - 16:01:11 »
 :o

jetzt geht mir ein licht auf...

okay, nu hab ichs verstanden.

danke und schönes wochenende.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz