hide / when mit @if aber es klemmt irgendwie

  • Hallo,


    ich würde gerne für die Hide / When abfrage anstelle von | bzw. & mit @if arbeiten.
    Das | & macht mich irre und vor allem ists mir vollkommen schleierhaft wie des funzt weil wenn man sich was superlogisches überlegt und eingibt, macht es trotzdem sehr unerwartete Dinge.


    Aber mit dem @if klappts auch net so richtig. In einer DB hab ichs umgesetzt. War aber net so komplex wie sonst.


    Jetzt hab ich das Problem: Es sollen immer bestimmte, wechselnde Personengruppen das Feld sehen. Diese Gruppen habe ich durch ein verstecktes Reader Feld und Rollen geregelt.
    Sie sind Peron, Editor, im Reader Feld enthalten, haben jeweils eine andere Rolle zugeteilt.


    Hab da auch schon verschiedene Varianten ausprobiert. Aber richtig glücklich bin ich mit keiner. Entweder greift sie nurn bissl, oder gar nicht.


    Versuch1:
    @If(@IsNotMember("[controller]";@UserRoles);1;
    @If(@IsNotMember("[manager]";@UserRoles);1;
    @If(From = @UserName;1;
    0)))


    Versuch2:
    @If(@IsNotMember("[controller]";@UserRoles) & @IsNotMember("[manager]";@UserRoles) &
    From = @UserName;1;
    0)))


    Versuch3:
    dasselbe nur mit | anstelle von &


    Wie macht ihr denn solche mehrfach Ausschlußformeln?


    Danke & Gruß,
    cyntia

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • Ich mache das meistens so, daß ich für jede Formel eine temporäre Variable definiere, die dann das Ergebnis der Überprüfung enthält.
    Diese verbinde ich dann per & oder | miteinander um ein True oder False zurückzuliefern.


    Ich würde dir übrigens empfehlen nicht mit 0 oder 1 als Rückgabewert sondern immer mit @True und @False zu arbeiten

  • Warum nicht mit 0 oder 1?
    @True gibt doch auch 1 zurück und @False die 0

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • ...und noch was:
    ich habs auch versucht als liste zu verknüpfen mit :
    aber da gehts nurn bissl.

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • Was genau willst du eigentlich erreichen ?


    Zum Testen von solchen komplexen Formeln kannst du dir ja einen berechneten Text in die Maske machen und den Ergebniswert anzeigen lassen.
    Dann siehst du ob deine Formel korrekt ist.

  • Also wenn jemand die Rolle [Manager] ODER [Controller] ODER der Ersteller des Dokumentes ist, dann soll er das Feld NICHT sehen. alle anderen sollen es sehen ??


    oder wolltest du das eher so haben ??


    Wer Manager ODER Controller ODER Ersteller ist der soll es sehen ??



    @If(@IsMember("[controller]";@UserRoles);@False;
    @IsMember("[manager]";@UserRoles);@False;
    From = @UserName;@False;@true)


    dann solltest du so ein Ergebnis sehen !

  • Simsala, die zweite Variante wollte ich bezwecken.
    Aber die erste brauch ich für das Gegenfeld.


    Hab ja ein Edit Feld, das dürfen Hinz und Kunz benutzen,
    und das dazugehörige Display Feld dürfen dafür entweder alle anderen sehen, oder eben nur ein paar besondere.


    Das mit Simsalas Formel schaut gut aus. Scheint genau das zu machen was ich versucht hab umzusetzen.


    taurec, wie meinst du das mit dem berechneten Text und Ergebnis anzeigen lassen?
    Klingt praktisch aber so richtig verstehen tue ichs noch nicht wie du das hinbekommst.

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • Na indem du in einen berechneten Text einfach deine Formel hineinkopierst.
    Diese zeigt dir dann ja entweder 0 oder 1 an je nachdem welche Bedingungen zutreffen.
    Ausserdem kannst du da ja dann auch Teile deiner Bedingung testen

    • Offizieller Beitrag

    in der Maske baust Du Dir berechneten Text ein und als Formel für den Text wird die HW-Formel verwendet.


    Damit kannst Du das Ergebnis der HW-Formel überprüfen. Wenn Du fertig bist löschst Du den berechneten Text wieder aus der Maske.


    Das Ergebnis des berechneten Textes sollte dann 0 oder 1 sein.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Also Feld A Anzeigen wenn


    @If(@IsMember("[controller]";@UserRoles);@False;
    @IsMember("[manager]";@UserRoles);@False;
    From = @UserName;@False;@true)


    >> Übersetzt
    bist du controller dann zeig mich an
    Oder bist du manager dann zeig mich an
    oder du bist der Ersteller edann zeig mich an
    ansonsten zeig mich nicht an.




    und Feld B anzeigen wenn


    @If(@IsMember("[controller]";@UserRoles);@true;
    @IsMember("[manager]";@UserRoles);@true;
    From = @UserName;@true;@false)


    >> Übersetzung
    Bist du controller dann nicht zeigen
    oder du bist Manager dann auch nicht zeigen
    oder der Ersteller dann erst recht nicht anzeigen
    alle anderen sollen mich sehn.



    Jetzt wird entweder A oder B angezeigt.

  • Genau so hab ichs gemacht.
    Klappt überall außer beim RichText Feld. :-?
    Habs ja schon eingeschränkt auf eine einzelne extra Rolle.


    @IsNotMember("[sheet]";@UserRoles) für das editierbare Feld
    und
    @IsMember("[sheet]";@UserRoles) für das display Feld.


    Aber: Das Display geht überhaupt gar nicht. Ich weiß, dass RichText Felder was besonderes sind. Aber mich irritiert, dass es momentan in der liveVersion der DB mit genau derselben Formel, aber einer anderen Rolle geht. Ich teste das ganze auch auf dem Server, aber halt auf der Schablone und ohne den ganzen @mailsend summs.

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • mhm, das sollte bei richtext genauso gehen. RT ist ja oft Stinking aber eigentlich geht das.


    Bist du dir denn überhaupt sicher die entsprechende Rolle zu haben.


    Mach dir doch mal ein berechnetes Feld (zur ansicht) in die Maske
    in der du einfach @userroles ausgibst. dann siehst du welche rollen du hast. Und denke daran. MANCHMAL setzt man sich eine Rolle und denkt auch das die genutzt wirdt, Aber intern kennt das System die noch nicht. Also wenn du dir Rollen zuweist DB komplett (auch im Designer) verlassen und F5 drücken. Dann wieder in die db rein, dann sollten die rollen wirklich genutzt werden.

  • Hab das feld @UserRoles gemacht.
    Es zeigt brav an, dass mein Testuser die Rolle sheet hat.


    Das Feld ist ein RT, Computed mit dem Wert des Editierbaren Feldes.


    Das Feld mit der Überprüfung des Ergebnisses zeigt eine 1 an.
    @IsNotMember("[sheet]");@UserRoles


    Warum um alles in der Welt True? Das ist doch gar nicht true wenn er doch die Rolle hat....
    Hab extra ein ganz nigelnagelneues Dokument angelegt, den Testcomputer neu durchgestartet (kann ja zwischendrinn mal net schaden). Sogar den im Deigner alles geschlossen und trotzdem @True. Das ist gemein.

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • Die Rolle ist kleingeschrieben sheet, nach dem add in der ACL wurde sie in eckige Klammern wie alle anderen Rollen auch gesetzt.


    Im Computed Feld stehen alle Rollen nacheinander alphabetisch mit blank getrennt:
    [owner] [manager] [sheet]


    Ich kann egal wie fest ich hinschau keine Unterschiedlichen Schreibweisen entdecken, weder in der HW Formel, noch in der ACL, noch in dem Computed Feld.


    Hier nochmal die Formel für das Feld RichText, Computed, Wert vom Editfeld welches auch RichText ist als Default Value.
    @IsNotMember("[sheet]";@UserRoles)


    Vielen, vielen Dank schonmal für eure hilfreichen Tipps!

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • Tipps gabs ja schon mehr als genug, ich möchte nur 3 Anmerkungen machen:


    1) Da RichTextfelder etwas "besonderes" darstellen teste die Formel einfach zuerst indem du Textfelder verwendest. Erst wenn alle Hide-When-Formeln gehen stelle die RichTextfelder als Typ wieder ein.


    2) Wenn du unbedingt mit RichText und Hide-When arbeiten möchtest nimm zum Testen ausschließlich NEUE Dokumente, nie bereits gespeicherte (siehe 3.). Auch RTF die sich aus anderen RTF berechnen sind nicht gerade günstig in Bezug auf Hide-Whens. Siehe 3.


    3) Ich würde es mir an deiner Stelle sehr genau überlegen ob du wirklich Hide-Whens in RichTextfeldern einsetzen möchtest: RichTextfelder speichern ihre Hide-When-Formeln beim Anlegen im Dokument selber ab. Hat das Richtextfeld mehrere Absätze dann natürlich auch in allen! Das hat zur Folge dass spätere Änderungen in der Maske die sich auf Hide-Whens (oder auch simpel Schriftarten) von RichTextfeldern beziehen keinerlei Auswirkungen auf bereits gespeicherte Dokumente haben. Neu öffnen, F9 und speichern reicht da nicht aus! Daher auch mein obiger Hinweis nur mit neuen Dokumenten zu testen. Für bereits falsch gespeicherte Hide-Whens gibts sogar extra Korrekturtools um diese nachträglich überhaupt wieder entfernen zu können ohne jedes Dokument einzeln zu öffnen und in allen Absätzen manuell die Hide-Whens zu ersetzen.

  • Hi,


    hab mittlerweile rausgefunden, dass das computed Feld den Inhalt vom RichText (das Attachment z.B. excel File, *.doc oder *.jpg ...) gar nicht erhält.
    D.h. es gibt nichts zum Anzeigen. Sorry, dass ichs erst jetzt nach so vielen Tests gesehen habe. Aber irgendwann kam mir das schon besonders spanisch vor. Hab dann beide Felder ohne HW Formel abgespeichert. Ein paar neue Dokumente erstellt und bei allen gesehen, dass attachment ist nur im Edit Feld.


    Wie aber bekomm ich hin, dass eine Personengruppe das File hochladen kann, eine andere das zwar sehen, aber nicht bearbeiten kann und alle anderen gar nichts davon mitbekommen?
    Irgendwelche Ideen?


    Gruß,
    cyntia

    domino server 6.5.5; notes clients 6.5.1 bzw. 6.5.2 englisch auf w2000 E
    clients auf w2000 englisch bzw. englisch multilanguage mit japanisch......

  • Du kannst das Attaschment verbergen fuer alle, die es nicht runterladen duerfen.
    Fuer Benutzer, die es sehen sollen...warum auch immer..koenntest Du ein Feld erstellen und dort den Dateinamen hinterlegen in der Art: An dieses Dokument ist attached: Filename