Dokument lesbar aber nicht mehr änderbar

  • Hallo zusammen,


    ich habe ein Protokoll welches über einen Button abgeschlossen wird. Dadurch wird der Status auf abgeschlossen gesetzt und das Dokument soll dann lesbar aber nicht mehr änderbar sein.


    Ich habe im queryopen folgendes stehen:


    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    If source.editMode=False And Not(source.isNewDoc) Then
    If source.Document.hasItem("Status") Then
    If source.Document.Status(0) = "abgeschlossen" Then
    Messagebox "Es sind keine nachträgliche Änderungen mehr möglich!"
    continue = False
    End If
    End If
    End If
    End Sub


    Das ist ein Skript welches hier gepostet wurde. Allerdings kann ich es jetzt nicht mehr öffnen zum lesen. Wie kann ich das machen, das lesen wieder möglich ist?

  • Indem du das Script nicht im queryOpen sondern im queryModeChange hinterlegst.
    In dem Event wo du es hast, ist Continue ein Flag dafür, ob das Dokument geöffnet wird oder nicht.
    Im queryModechange verhindert es den Wechsel von Lese- in Bearbeitungsmodus

  • Hi,


    hurtz
    Und was machst Du, wenn der Anwender aus einer Ansicht heraus STRG + B drueckt.


    Dann laeuft Dein QueryModeChange naemlich nicht ab.


    Daher frage ich mal.
    Warum in einem solchen Fall nicht mit Leser- und Autorenfeldern arbeiten oder mit Teilmasken oder mit Abschnitten mit Zugriffsberechtigung, usw.



    Andreas

  • Hi,


    ich arbeite auch gern mit den Maskenevents. Um auf den Hinweis von ascabg zu antworten: Um den Fall abzugreifen, das der User STRG + B drückt schreibe ich das praktisch gleiche Script auch in das QueryOpen-Event. Allerdings dann natürlich mit

    Code
    if source.editmode = true then
    .
    .


    Natürlich wäre es in jedem Fall sicherer mit Autorenfeldern zu arbeiten, aber auf die o.g. Weise geht es auch.

  • Und ein etwas findiger User installiert sich ein Tool oder eine Schaltfläche und ändert mal kurz beliebige Daten ab.
    Oder ich öffne das mit aktiviertem Script Debugger und breche die entsprechenden Events einfach ab.


    Die Maskenevents für Sicherheitsfeatures zu verwenden ist absoluter Unsinn, denn diese bieten keinerlei Sicherheit.
    Wenn dann muss da sauber mit Leser und Autorenfelder gearbeitet werden.

  • Also wenn ich STRG+B drücke, dann kommt auch die Meldung das dieses Dokument abgeschlossen ist und nicht mehr änderbar ist.


    Es lässt sich definitiv nicht mehr in den Bearbeitungsmodus setzen.

  • Natürlich hat taurec Recht, als Sicherheitsfeature taugen die Maskenevents nicht. Dazu lassen sie sich zu einfach umgehen. Aber in ausgewählten Fällen können sie durchaus nützlich sein.


    Dein Dokument lässt sich zwar "erstmal" nicht mehr in Bearbeitungsmodus nehmen, aber jeder Autor kann sich den Debugger anschalten und das Script abbrechen. Dann geht es halt doch wieder (zum Glück kennen den Debugger nicht viele...). Oder über eine einfache Aktion werden aus der View heraus Daten verändert. Wenn Du sowas echt verhindern willst, dann gehen definitiv nur Autoren-/ Lesefelder

  • subi
    Wo befindest Du Dich, wenn Du STRG + B betaetigst?


    In einer Ansicht oder hast Du das Dokument bereits offen, aber noch im Lesemodus.


    BTW
    Ein kleiner Agent mit

    Code
    FIELD Status := "Abgeschlossen"


    hebelt Deinen "Sicherheitsmechanismus" auch schon aus.



    Andreas

  • ascabg


    Stimmt in der Ansicht komm ich mit STRG+B wieder rein und klar mit einem Agenten sowieso. Aber bei mir geht es nur darum das der User nichts mehr ändern kann. Von dem her reicht mir das vorerst so!

  • Zitat

    Aber bei mir geht es nur darum das der User nichts mehr ändern kann.


    Aber genau das ist ja das Problem.
    Mit einfachen Möglichkeiten kann ein User Infos ändern, wo Du meinst, dass das nicht mehr geht.

  • Aber wenn Deine User in der Ansicht STRG+B druecken, was eine der gebraeuchlisten Tastenkombinationen in LN ist, die die User auch mit als erstes "lernen", koennen Sie das Dokument doch bearbeiten und auch speichern.


    Wenn Dir, wie Du schreibst diese bisher beschriebene Vorgehensweise genuegt, dass solltest Du zumindest beim Speichern des Dokumentes pruefen, ob der Status "abgeschlossen" ist und wenn ja das Speichern an dieser Stelle abbrechen und nicht zulassen.


    Alles andere birgt aus meiner Sicht zu grosse und vor Allem auch von "normalen" Anwendern schnell zu umgehende Quellen, um Deinen gewuenschten Effekt, Dokument kann nicht mehr veraendert werden, wenn der Status = "abgeschlossen" ist, zu umgehen.



    Andreas

  • andreas: Recht hast du mit deiner Aussage schon, im QuerySave zu prüfen. Technisch gesehen. Aber entschuldige bitte: damit hast du nur einen Workaround zu einem Workaround erschaffen. Der aber auch umgangen werden kann. Stichwort: @SetField. Wollen wir so hantieren? Eigentlich doch nicht, oder?


    @OP: Ich verstehe nun beim besten Willen nicht, warum du dich so vehement gegen Autorenfelder sträubst. Es wurde deine Frage technisch und -in gewissem Sinne- auch organisatorisch vollständig und völlig korrekt beantwortet mit "Nimm halt ein Autorenfeld". So, fertig ist der Lack. Du verwarfst diese Möglichkeit, was denn nun noch? Wollen wir uns nun noch den 10. Workaround zum 9. Workaround, der den 8. Workaround mehr schlecht als recht deckelt ausdenken? Es tut mir leid, aber es kann doch nicht angehen, dass du eine Antwort bekommst und verlangst, dass wir uns beliebig viele weitere ausdenken, die alle miteinander die Sache eher verschlimmern als verbessern. Wäre die erste Antwort in die Richtung Workaround gegangen, wäre die Frage nach einer besseren Alternative recht und billig gewesen. Aber die Bitte nach immer hanebüchneren Alternativen ist wirklich nicht mehr verständlich.

    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

  • RockWilder
    Ich gebe Dir absolut recht.
    Es ist in diesem Fall ebenfalls nur wiederum ein Workaoround, der umgangen werden kann.


    Aber da der "einfach" zu umgehende Code ja "ausreicht", wollte ich den Fragesteller noch auf eine weitere Moeglichkeit hnzuweisen, das er auch an einer weiteren Stelle eine "einfache" Moeglichkeit hat, den von ihm gewuenschten Effekt zu erreichen.


    Die wirklich beste Variante, um die geschilderte Aufgabenstellung einigermassen sinnvoll zu realisieren, sind und bleiben die Autoren- und Leserfelder.



    Andreas