Hallo,
in einer Maske habe ich eine Schaltfläche zum ersetzen des Dokuments.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument, docNeu As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set db = session.CurrentDatabase
Set docNeu = New NotesDocument(db)
If Messagebox ("Soll das gewählte Dokument ersetzt werden? ", 36,"Dokument archivieren" ) = 7 Then
Exit Sub
End If
'Felder werden geändert, wie z.B. Status auf archiviert gesetzt und das Archivierungsdatum gesetzt
doc.Status = "archiviert"
doc.ArchDat = Now
doc.Rolle = ""
Call doc.CopyAllItems(docNeu)
Call doc.Save(True, False)
'Felder des neuen Dokuments auf leer setzen
docNeu.Datum = ""
docNeu.Status = "aktuell"
docNeu.ArchDat = ""
docNeu.Rolle = "[Bearbeiten]"
'Neu erstelltes Document wird geöffnet
Call workspace.EditDocument( True, docNeu)
Call workspace.ViewRefresh
End Sub
Das Script hat einen kleinen Hacken:
Wenn der Benutzer die Esc Taste benützt, ohne dass er zuvor in das neue Dokument geklickt hat, dann wird das neue Dokument nicht abgespeichert und in der Ansicht gibt es somit auch kein Dokument mehr, welches aktuell ist. Wenn ich versuche ein Call docNeu.Save(True, False) an das Ände des Script zu hängen und der Benutzer macht Änderungen und will diese Speichern, so erhalte ich die Fehlermeldung, dass die Datenbank bereits ein Dokument mit dieser ID enthält.
Wie schaffe ich es, dass es immer ein aktuelles Dokument gibt?