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 |
| |
| |
| doc.Status = "archiviert" |
| doc.ArchDat = Now |
| doc.Rolle = "" |
| |
| Call doc.CopyAllItems(docNeu) |
| Call doc.Save(True, False) |
| |
| |
| |
| |
| docNeu.Datum = "" |
| docNeu.Status = "aktuell" |
| docNeu.ArchDat = "" |
| docNeu.Rolle = "[Bearbeiten]" |
| |
| |
| 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?