Domino 9 und frühere Versionen > Entwicklung
Backend-Feldänderung, Save, danach QueryModechange => Änderung nicht greifbar
Jérôme:
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"
--- Code: ---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
--- Ende Code ---
QueryModeChange
--- Code: ---Sub 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
--- Ende Code ---
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
thorsten_w:
Versuch mal nach der Änderung im Backend auf dem UIDocument einen Reload zu machen.
--- Code: ---Call Source.Reload ()
--- Ende Code ---
Vielleicht hilft das.
Gruss Thorsten
Jérôme:
Hallo Thorsten,
danke für deine schnelle Antwort (heute ja schon nicht zum ersten mal ;) ). Das habe ich vergessen zu erwähnen: was ich schon probiert habe, jeweils nach dem Source.document.Save(True, False, True) beim Button, ist ein
Call uidoc.Reload()
Call ws.ViewRefresh()
Call ws.ReloadWindow()
Leider alles ohne Erfolg. Bei den uidoc.Refresh... Methoden bekomme ich ja (wie erwartet) "Document command is not available"-Fehler.
- Jérôme
thorsten_w:
Dann versuche es mal so:
statt
--- Code: ---Call doc.Save(True, False, True)
uidoc.editmode = True
--- Ende Code ---
so
--- Code: ---Call doc.Save(True, False, True)
Call ws.Editdocument (true, doc)
--- Ende Code ---
Gruss Thorsten
Jérôme:
Das funktioniert insofern, dass dann ein neues Fenster mit dem Dokument geöffnet wird, und hier stimmt alles. Ich bin also hergegangen und habe das uidoc erst geschlossen, bevor ich es mit dem ws.EditDocument neu geöffnet habe.
--- Code: ---Call doc.Save(True, False, True)
Call uidoc.Close(True)
Call ws.EditDocument(True, doc)
--- Ende Code ---
Das ist zwar irgendwie nicht optimal, habe ich das Gefühl, aber das kleine Flackern ist immer noch besser, als das Dokument manuell zu schließen und wieder zu öffnen.
Vielleicht fällt ja jemandem noch eine bessere Lösung ein, aber bis dahin würde ich sagen: Danke Thorsten!!
Beste Grüße
- Jérôme
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln