QueryModeChange --> Anfänger || Dringend!!

  • Hallo zusammen!


    Bin noch zeimlich frisch in Lotus Script.


    Folgende Frage:


    Bei einer maske möchte ich über QueryModeChange erreichen, das nur ausgewählte Benutzer ein erstelltes/freigegebenes Dokument nochmal editieren können. Der Ersteller selbst sowie andere sollen die Meldung bekommen, dass das Dokument schon freigegeben ist, und nich tmehr editiert werden kann.


    Das Feld Status hat die Wertte freigegeben und nicht freigegebene.
    So funktioniert es, aber der User der es doch noch editieren darf kann es nicht.



    Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
    '----------------------------'
    'Öffnen in den Edit-Mode verhindern'
    '----------------------------'
    Dim sStatus As String
    sStatus = Source.document.Status(0)
    Dim doc As NotesDocument
    Set doc = source.Document
    If (Not source.editMode And sStatus = "freigegeben" And Not Freigeber="User XY/voba-grevenbrueck") Then
    Messagebox "Das Dokument wurde freigegeben! Änderungen sind nicht mehr möglich!", 48, "Hinweis:"
    continue = False
    End If
    End Sub

  • Hi,


    Zitat

    And Not Freigeber="User XY/voba-grevenbrueck"


    Not funktioniert, so glaube ich mich dunkel zu erinnern, NUR bei logischen Werten (Boolean).


    Und wo kommt Freigeber eigentlich her?


    Versuch mal


    And Freigeber<>"User XY/voba-grevenbrueck"


    Aber denke bitte auch daran, dass ein Anwender das Dokument mittels "STRG + B" (deusch) bzw. "STRG + E" (englisch) aus der Ansicht heraus gleich zum Bearbeiten oeffnen kann und somit
    QueryModeChange nicht ausgeloest wird.



    Andreas

  • Vielen Dank für die Antwort.


    Freigeber ist ein Dropdownfeld, hinter dem die 3 User die es noch bearbeiten können hinterlegt sind. Die 3 setzen das Dokument auch in den Status "freigegeben".


    Hat auch mit <> nicht funktioniert.

  • Zitat


    das nur ausgewählte Benutzer ein erstelltes/freigegebenes Dokument nochmal editieren können


    Warum arbeitest du nicht simpel und einfach mit Autorenfeldern?

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Und wenn wir schon am Auflisten der Alternativen sind, hier noch ein paar


    - zugriffsgesteuerte Abschnitte
    - Teilmasken


    :)


    Wann liest Du denn den Wert aus dem Feld "Freigeber" aus, um ihn zum Vergleich zu verwenden? (analog sStatus)
    Du kannst nicht einfach auf so das Feld zugreifen, um einen Vergleich durchzufuehren.



    Andreas

  • If (Not source.editMode And sStatus = "freigegeben" And Not Freigeber="User XY/voba-grevenbrueck") Then


    Ähmm, beim Querymodechange – Event ist dein uidoc sowieso noch im Read-Modus,
    wozu dann Not source.editMode ?


    Wo und wie wird Freigeber definiert?


    Wenn in der Liste drei Personen sind und du vergleichst den Namen des aktuellen Users (nehme ich an) mit dieser Liste (sozusagen 1 = 3),
    dann ist Not Freigeber="User XY/voba-grevenbrueck") immer true.


    Fazit: Dein If liefert ab sStatus = "freigegeben" z.Z. IMMER true, also ist auch continue immer false.



    Andere Lösungen (s. Vorschläge von RockWilder und ascabg) finde ich übrigens besser.

  • Laura


    Ist es das ? Woher weisst du daß das Dokument da noch im Lesemodus ist.


    Wenn ich ein Dokument mit bearbeiten öffne, dann bringt mir dieses Event gar nichts weil es erst durchlaufen wird wenn ich wieder in den Lesemodus wechsele.
    Das Event wird nur dann Richtung Edit Mode durchlaufen wenn ich das Dokument erst im Lesemodus öffne und es erst dann in den Editmodus versetzte.

  • taurec
    Woher ich das weiß? Aus eigener Erfahrung.


    OK, ich weiß es nicht, aber ich vermute es stark,
    weil maiki82 mit seinem Script erreichen möchte, dass sein uidoc nur für bestimmte User bearbeitbar sein soll.


    Also vermute ich auch, dass er in seiner Maske bei den Eigenschaften den "Bearbeitungsmodus automatisch aktivieren" NICHT angeklickt hat
    und denkt, dass der User erst im Dokument irgendwo doppelklicken muss um in Bearbeitungsmodus zu wechseln.


    Und ich vermute, dass er nicht wusste, dass ein fortgeschrittener User sein Script mit STRG+B leicht umgehen kann.


    Alle diese Fehler habe ich selbst – als Anfängerin - vor 9 Jahren gemacht, auf die Nase gefallen, was daraus gelernt.


    Bist du mit meiner Antwort zufrieden?


    Und du, maiki82?