Hi,
Wie kann ich ein Dokument im Frontend neu laden / refreshen, wenn es nicht im Bearbeitungsmodus ist und ich auch nicht umschalten kann (Weil der Nutzer nicht das recht hat, das Dokument zu bearbeiten) ?
Folgendes Codesegment funktioniert zwar, beinhaltet aber, das der Editmode auf true gesetzt werden muss, was ich gern vermeiden würde:
Dim uidoc As NotesUIDocument
Set uidoc = g_myWorkSpace.WorkSpace.CurrentDocument
uidoc.Document.SaveOptions="0"
uidoc.EditMode = True
uidoc.Refresh
uidoc.EditMode = False
Thx
Meines Wissens gar nicht.
Was du machen kannst:
Das Dokument automatisch schliessen und neu öffnen.
Geht über
UIworkspace.editDocument (Source.Document, false, false) ' oder so ähnlich
im QueryClose.
Du definierst eine globale Variable in der Maske.
globale Declaration:
Die setzt du im QueryOpen auf false
Hinter der Refresh Aktion oder Button steht:
doRefresh = true
uidoc.close
im QueryClose steht:
if doRefresh then
UIworkspace.editDocument (Source.Document, false, false) ' oder so ähnlich
end if
sollte imho funktionieren.
Oder noch besser: Du packst den ganzen Code in eine Klasse, die du direkt im QueryOpen initialisierst. Das entsprechende Objekt deklarierst du global in den Masken-Declarations.
Thomas hat ja mal gezeigt, dass man in die Klasse auch hooks für Events schreiben kann.
Der Code ist dann einfacher zu maintainen und wiederverwenden, weil er eben in einer Code-Einheit steht und nicht über mehrere Masken-Events verstreut ist.
Axel
Warum schliesst Du das Dokument nicht und öffnest es anhand der UNID erneut, nachdem im Backend die Felder geändert wurden?
Andreas
Hm ich hab mal folgendes versucht:
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim key As String
Set uidoc = g_myWorkSpace.WorkSpace.CurrentDocument
key = Me.Document.DocumentID(0)
Call uidoc.close()
Set doc = g_mySession.CurrentDatabase.GetDocumentByUNID(key)
Call g_myWorkSpace.WorkSpace.EditDocument(False, doc)
Das schließt zwar das document und öffnent es gleich wieder, aber zeigt immer noch die alten werte an, wenn ich editdocument mit true statt false aufruf, dann funktionierts, aber das ist ja nicht der sinn der sache. Hast du da vieleicht eine Idee, woran es liegen könnte?