Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: robertpp am 14.02.06 - 16:09:12
-
Hallo,
Ich schaffe es einfach nicht diese Formel bei der Hide-When Abfrage so zu vereinfachen das ich keine @if- Abfrage mehr habe!!
_anzeigen := @False;
_verbergen := @True;
@If(
@UserNamesList *= CreatorAuthors; _anzeigen;
Status != ""; _verbergen;
_verbergen
)
Ich hätte es mir das dann so vorgestellt:
_Zeigen1 := !(@UserNamesList *= CreatorAuthors);
_Zeigen2 := Status != "";
_Zeigen1 & ! _Zeigen2
Aber ich weiß das ich beim Status einen Fehler habe!!!!!!
Kann mir da bitte jemand helfen.
Ich hab schon alles durchprobiert.
Danke robert
-
!@UserNamesList *= CreatorAuthors | Status != ""
Ich glaube, kürzer geht das nicht mehr.
@True und @False braucht man bei Hide-whens in Wirklichkeit nicht, es reicht das Aufzählen der Bedingungen, wann verborgen werden soll.
HTH,
Bernhard
-
Bernhard,
Das war mir eh klar das ich das nicht brauche @True und @False ich hab das von Best Practics genommen und so hat es auch dann funktioniert. War echt ein denkfehler ich hab es immer mit & verknüpft.
danke robert
-
Doch noch ein Problem:
Ich brauch das ganze auch noch so: Wenn der User im CreatorReaders Feld steht und der Status >"0" ist dann soll es auch angezeigt werden!
Das sollte dann doch so aussehen:
_Zeigen1 := !(@UserNamesList *= CreatorReaders);
_Zeigen2 := Status >"0";
_Zeigen1 & _Zeigen2
Oder??
-
Gerne, Robert.
Die Schwierigkeit mit den when-whens ist ja, dass man aus menschlicher Sicht immer alles auf den Kopf stellen muss. Hilfreich ist manchmal, wenn man sie die Formel so aufschreibt, als wenn es um das Anzeigen gehen würde, dann eine Klammer darum setzt und ein "!" davor ;)
Bernhard
EDIT:
Das wäre dann
!@UserNamesList *= CreatorAuthors | Status !> "0"
Wegen der Verneinung wird aus dem AND nun ein OR.
-
Ggf. leichter lesbar wäre dann
!(@UserNamesList *= CreatorAuthors & Status > "0")
Bernhard
-
Ich weiß heute stelle ich mich an wie wenn ich Notes das erste mal benutze nur mach ich heute schon den ganzen Tag damit herum und deshalb frag ich lieber heute nach.
Kann ich auch wenn das Status-Feld ein Textfeld ist trotzdem auf Status > 0 abfragen oder muss ich dass so machen: Status >"0"?
Was ist da richtig?
danke robert
-
@toNumber(Status) > 0
-
@ToNumber oder @TextToNumber kann man wohl nehmen, aber ich würde der Übersichtlichkeit lieber gleich bei den richtigen Typen bleiben:
Wenn es ein Textfeld ist, MUSST Du "0" nehmen, denn 0 ist eine Zahl und hat mit "0" soviel zu tun wie ein Schneepflug mit der Tiefseeforschung.
Bernhard
-
Danke nochmals.
Aber kann ich mathematisch gesehen trotzdem einen String auf größer oder kleiner Abfragen so wie ich es mit Status >"0" mache? Das kann ja dann garnicht gehen oder?
-
Da der Computer alles eines Abfolge von Bits verarbeitet: Doch, das kannst Du auch mit Strings machen, die nichts anderes sind als eine Abfolge von ASCII-Codes (okay, im Falle von Notes nicht ganz, aber egal).
"0" (als Zeichen!) ist 48, "1" ist 49 und so weiter.
Zahlen werten ebenso in Bytes (und letztendlich Bits) gewandelt und ebenso verglichen. Datumswerte sind in Wirklichkeit Datumsseriennummern (0 = 31.12.1899).
Damit gilt auch "Bernhard" < "Robert". Was heute aber nicht stimmt ;D
Bernhard
-
Es wird sogar "-1" vor "0" sortiert. Aber "-2" nach "-1". Ok. Ist eigentlich auch egal für < "0"
-
Axel, mach doch jetzt niemanden wirr ;D
"-2" ist 45 50
"-1" ist 45 49
"0" ist 48
Lgisch, dass diese Strings so sortiert werden. Wer wirklich Zahlen sortieren will, nimmt ann am besten entsprechende Datenformate. Wer es nicht tut (und erst type conversions durchführen muss), erlebt bei entsprechenden Szenarien sein blaues Wunder ...
Bernhard
-
Sollte nur ein Anstoß zum Nachdenken gewesen sein.
Ich habe es so oft gesehen, dass sich gewundert wurde, dass "10" plötzlich vor "2" sortiert wurde.
Man kann argumentieren, dass Werte möglichst den Wertetyp haben sollten als der sie wahrgenommen werden. Wobei ad-hoc Typkonvertierungen mit @toNumber Ressourcen beanspruchen (sprich Views langsamer machen).
-
Neuer Tag neues Glück. Heute ist es wieder vorbei mir der Lernstunde und somit nochmals danke für die Erklärung. Auch wenn ich es schon oft verwendet habe es war halt einfach mal interessant zu wissen wie genau das abläuft.
danke robert