Hallihallo!
In einer Projektverwaltung sollen Vorgänge zur Bearbeitung angenommen werden. Das heißt, das Dokument soll nicht bearbeitbar sein, solange man nicht auf den Button "Zur Bearbeitung annehmen" geklickt hat (dabei soll dann ein Eintrag in die Historie vorgenommen werden).
In der
Theorie sieht das bei mir so aus:
1. Im Dokument gibt es einen Flag: 0 = Dokument darf nicht bearbeitet werden, 1 = Dokument darf bearbeitet werden. Dies wird über das QueryModeChange gesteuert.
2. Dieser Flag steht auf 0 - klickt man auf den Button, so wird im Backend das Feld auf 1 gesetzt und das Dokument per EditMode = True in den Bearbeitenmodus versetzt.
3. Im Querymodechange wird der geänderte Flag erkannt und das Dokument in den Bearbeitungsmodus gesetzt.
Problem:Im QueryModeChange erkennt das Script nicht, dass die Änderung gemacht und zeigt immer noch eine 0 an. Schließe ich das Dokument und öffne es erneut, dann ist die Änderung aber vorhanden und ich kann das Dokument bearbeiten. Komische Sache.
Hier sind die Scripte, die bei der Prozedur durchlaufen werden:
Button "Vorgang Annehmen"Sub Click(Source As Button)
' Setzt das Flag "Is
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
doc.dok_angenommen = 1
Call doc.Save(True, False, True)
uidoc.editmode = True
End Sub
QueryModeChangeSub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim doc As NotesDocument
Dim vRoleKeys (0 To 1) As String
Set doc = Source.Document
' Wenn das Dokument nicht angenommen wurde (dok_angenommen = 0), dann
' darf man auch nicht in den Bearbeitungsmodus
vRoleKeys(0) = session.Username
vRoleKeys(1) = "[SuperEditor]"
If (h_HasRole(vRoleKeys) Or ArrayHasElement(doc.übergeordnete_projektleiter, session.Username)) Then
Continue = True
Elseif (doc.dok_angenommen(0) <> 1 And Source.EditMode = False) Then
Continue = False
End If
End Sub
Ich habe schon versucht, im QueryModeChange nicht mit Source.Document, sondern mit GetDocumentByUNID(Source.Document.UniversalID) zu arbeiten, um möglicherweise ein Handle auf das gespeicherte Dokument zu erhalten, leider ohne Erfolg. Ein Kollege hat empfohlen, die Variable temporär in die Notes.ini zu schreiben, aber dagegen sträube ich mich.
Ich hoffe, eine/r von euch weiß auch hierzu einen Ratschlag, das kann doch kein unlösbares Problem sein
.
Beste Grüße
- Jérôme