Antwort erstellen, nur wenn User im Hauptdok dafür berechtigt wird

  • Hallo


    ich habe ein Dokument mit einem Feld, in dem User und Gruppen eingetragen werden können.
    Auch verschachtelte Gruppen.


    Anhand dieses Feldes möchte ich einschränken, wer auf dieses Dokument eine Antwort erstellen darf.


    Die Antwort wird anhand eines Buttons, der einen Script Agenten aufruft angelegt.


    Mit welchen Code Zeilen komme ich denn hier weiter.



    Danke schon mal
    Lizzy

  • ich kriegs nicht hin



    Set dokrechte = parentdoc.GetFirstItem("Kapitelverwalter")
    Set meinerechte = Evaluate("@UserNamesList")


    If Evaluate("@IsNotMember(meinerechte;dokrechte)") Then
    .......



    welche Datentypenbrauche ich hier für dokrechte und meinerechte?



    Lizzy

  • Schon mal in die Designerhilfe geschaut ?
    Da steht ganz klar drin was Evaluate zurückliefert.
    Ein Set ist da auf jeden Fall komplett falsch.


    Mal davon abgesehen: Warum versteckst du nicht einfach die Aktion zum Erstellen des Antwortdokumentes ?
    Dann brauchst du nur Formelsprache und kein Evaluate

  • Button verstecken geht nicht, da der User je nachdem auf welchem Kapitel er steht, ein Antwortdokument erstellen darf oder nicht.


    Dim docrechte As NotesItem
    Dim meinerechte As Variant
    dim erg As Variant


    Set docrechte = parentdoc.GetFirstItem("Kapitelverwalter")
    meinerechte = Evaluate("@UserNamesList")
    erg = Evaluate("@IsNotMember(docrechte;meinerechte)")


    If erg(0) = 1 Then
    Messagebox "Sie haben kein Recht, hier eine Antwort zu erstellen",0,"Sicherheitshinweis"
    Exit Sub
    End If
    .....


    Problem: erg bringt immer 0, egal ob ich im Feld Kapitelverwalter eingetragen bin oder nicht

  • welches Evaluate meinst du jetzt


    Tut mir leid, aber ich steh grad auf dem Schlauch.


    Die Variablen docrechte und meinerechte haben einen Inhalt.


    Mit IsNotMember möchte ich doch nur den Inhalt der beiden Variablen vergleichen.

  • Falsch, denn du übergibst nicht die Variable im Evaluate sondern nur den Namen des Feldes aus dem er sich die Werte holen soll.
    Und da dein Evaluate keinen Dokumentbezug hat steht da auch nie was drin.


    Wenn du dir doch bitte mal die Hilfe und das Beispiel dort anschauen würdest, dann wäre dir das auch klar.


    Und warum du das ganze auf zwei Evaluates aufteilst verstehe ich auch nicht

  • jetz blick ich überhaupt nicht mehr durch


    mit
    meinerechte = Evaluate("@UserNamesList")
    erg = Evaluate("@IsNotMember(docrechte;meinerechte)",parentdoc)


    bekomme ich auf jedem Kapitel als erg 0


    mit
    erg = Evaluate("@IsNotMember(docrechte;@UserNamesList)",parentdoc)



    bekomme ich auf jedem Kapitel als erg 1

  • Liest du eigentlich auch was man dir schreibt ?


    Das Gefühl habe ich nicht.


    Denn dein erstes Evaluate vergleicht das nicht vorhandene, also leere Feld docrechte mit dem ebenso nicht vorhandenen leeren Feld meinerechte.
    Und wenn ich sage ist leer in leer nicht drin bekomme ich logischerweise ein unwahr, also 0 zurück


    Dein zweites Evaluate vergleicht die Gruppen und Benutzernamen mit dem wiederum nicht existenten Feld docrechte, also leer.


    Und leer ist in einer vollen Liste auch nicht vorhanden, deswegen wahr, also 1.


    Wie wäre es wenn du einfach mal die korrekten Feldnamen deines Dokumentes angibst anstatt irgendwelche LotusScript Arrays, die Evaluate auf jeden Fall nicht kennt

  • ja aber die beiden Variablen sind ja nicht leer.


    wenn ich mir das Ganz im Debugger ansehen, dann ist in der Variablen docrechte alle Einträge die im Elterndokument im Feld "Kapitelverwalter" eingetragen sind


    und in der Variablen meinerechte wird mein Name, alle Gruppen in denen ich enthalten bin und die für mich eingestellten Rollen der Datenbank angezeigt



    und lesen tu ich sehr wohl, wenn dann kannst du mir höchstens vorwerfen, daß ich es nicht kapiere

  • Schön daß die Werte in deiner Variablen drin sind, nur verwendest du im Evaluate nicht deine Variable, nur weil du da zufälligerweise den gleichen Namen reinschreibst.


    Und das Feld meinerechte im parentdoc existiert nicht und ist damit leer.


    Das habe ich jetzt schon zum dritten Mal geschrieben. Und wenn du den Unterschied zwischen Feldern und Variablen nicht kennst, dann kann dir hier wirklich keiner helfen.


    Und ich habe in meinen Antworten explizit Feld und nicht Variable geschrieben.


    Wenn du dann wieder anfängst von Variablen zu sprechen, dann zeigt das eben doch, daß du die Antworten nicht oder nicht richtig gelesen hast.

  • ok ich geb's zu, das mit Feldern und Variablen habe ich überlesen



    mein Code heisst jetzt


    erg = Evaluate(|@IsNotMember(Kapitelverwalter;@UserNamesList)|,parentdoc)


    ist das so korrekt? auf den ersten Blick scheint es zu funktionieren



    Interessehalber: wie kann ich eine Variable innerhalb Evaluate benutzen


    Danke

  • Ja so passt es.


    Gar nicht, denn es existiert da keine Übergabe Schnittstelle.
    Entweder schreibst du den Wert vorher in das Dokument, auf das du dich beziehst oder du übergibst das dann als reinen Text, wie als ob du in einer @Formel einen fixen Text hättest