@If und @IsNumber und Blank

  • Guten Morgen an alle,
    ich habe ein ganz einfaches Zahlenfeld, das ich über eine Aktion auf den Inhalt abfrage, nämlich so:


    @If(@IsNumber(Konditorkuchen); ""; @Return(@Prompt([Ok]; "Falscher Wert"; "Sie müssen bei der Kuchenbestellung eine Zahl eingeben.")));


    Das klappt, solange ich eine Zahl in das Feld eintrage. Nun soll es aber auch möglich sein, ein blank in dem Feld stehen zu haben (das hat mit dem späteren Druck zu tun).
    Also erweiter ich die Formel wie folgt:


    @If(Konditorkuchen = "" | @IsNumber(Konditorkuchen); "";
    @Return(@Prompt([Ok]; "Falscher Wert"; "Sie müssen bei der Kuchenbestellung
    eine Zahl eingeben.")));


    Aber das interessiert Notes gar nicht. Die beiden Abfragen heben sich wohl gegenseitig auf?? Ich habe schon so ziemlich alle Varianten ausprobiert (auch mit einem Textfeld) und weiß nun nicht mehr weiter ?(
    Habt ihr noch eine Idee?


    Gruß aus Hamburg

  • Feldtyp ist ein ganz normales Zahlenfeld eben - nix besonders : Typ = Zahl


    Keine Validierung und keine Eingabeumsetzung.


    Das einzige was ich noch habe ist ein Vorgabewert, der aus einer Vorlage kommen kann. Aber ich habe es auch schon ohne Vorgabewert probiert - ohne Erfolg.


    Okay... ein bissl quer ausgedrückt mit "ein blank in dem Feld stehen zu haben" :)


    damit meine ich, das in dem Feld entweder eine Zahl stehen darf oder eben nichts, oder anders ausgedrückt - alles außer Buchstaben :)

  • Du kannst aber kein Zahlenfeld mit einem String vergleichen.


    @If(Konditorkuchen = ""; ...)


    Desweiteren verstehe ich noch nicht ganz, warum Du ueberhaupt mit @IsNumber pruefts, ob in dem betreffenden Feld auch wirklich ein numerischer
    Wert enthalten ist?
    Du kannst in ein Feld vom Typ "Zahl" auch nur Zahlenwerte eingeben. Diese Pruefung uebernimmt doch schon Notes fuer Dich.



    Andreas

  • Direkt nach der Abfrage kommt ein MailSend.


    Er führt das MailSend aus und merkt dann erst, das der Wert in dem Feld Konditorkuchen verkehrt ist. Kann ich das vielleicht irgendwie anders abfangen?


    Ich habe die Formel noch mal angepasst, aber er merkt immer noch zu spät, das das Feld einen falschen Wert enthält.


    @If(@TextToNumber(Konditorkuchen) != "" & @IsNumber(@TextToNumber(Konditorkuchen)); "";
    @Return(@Prompt([Ok]; "Falscher Wert"; "Sie müssen bei der Kuchenbestellung eine Zahl eingeben.")));


    REM {Senden an den NKG-Leiter};
    @MailSend(NKG_Leiter;"";"";"Neuer Bewirtungs-Auftrag in " + liefer_standort;"";
    "Es ist eine neue Bestellung eingegangen." + @NewLine + @NewLine +
    "Hier geht es zum Dokument, bitte klicken --> ";[IncludeDoclink]);

  • Von wievielen Pruefungen reden wir hier denn? (Anzahl an zu pruefenden Feldern)


    Wenn nicht so viele, dann mach die Pruefung in den jeweiligen Eingabevalidierungen.
    In den Button packst Du dann nur noch die Abfrage, ob die Daten korrekt sind - sprich alle Validierungen erfolgreich laufen -
    und machst dann Dein Senden der Mail.


    (@IsValid, oder was auch geht @If(@Command([FileSave]); @MailSend(); "").


    Speichern muss Du das Dokument ja eh vorher, da Du einen Link auf dieses Dokument versenden willst.



    Andreas

  • Was ich auch noch gesehen habe und in Deinem Zusammenhang nicht ganz verstehe ist Folgendes:


    @If(@TextToNumber(Konditorkuchen) != ""; ....)


    Hiermit wandelts Du einen Textwert - ich denke das Feld ist vom Typ Zahl und wird Dir somit niemals einen Textwert liefern - in eine Zahl (numerischen Wert) und vergleichst diesen dann mit einem String.



    Andreas

  • Hallo Karin,


    Du fällst hier über eine Unsauberkeit der Formelsprache herein: Du kannst ein Zahlen-(und Date/Time-)Feld auf einen Leerstring (und das ist kein "blank" im englischen, das bedeutet da "Leerzeichen"!) abfragen. For further use (und LotusScript): Ändere das (in Formelsprache wirklich nur wegen "Ordnung und Sauberkeit auf dem Schlachthof) auf ein
    @If (@Text (Konditorkuchen) = ""; ....
    Das hat aber mit Deiner eigentlichen Frage nichts zu tun - das war eine "syntaxhygienischer" Tipp :)


    Weiters:
    Eine weitere Inkonsistenz der Formelsprache: @Return verträgt sich nicht mit Frontend-Befehlen. @Return ("") oder @Return (0) (und ähnliche Konstrukte) brechen die Formelabarbeitung ab. Ein @Prompt als Rückgabewert nicht! Was Du brauchst, ist bei Deiner Abfrage also im Fehlerfall ein @Do und dann
    1. Befehl: Dein @Prompt
    2. Befehl: Dein @Return (0) (= "aus die Maus!")


    HTH,
    Bernhard


    PS: In LotusScript wäre Dir das nicht passiert!