Ok, also ich denke dass es in der Tat eleganter und flexibler mit $VersionOpt geht. Es seht zwar nichts in der KBASE aber in der Designer Hilfe unter "Felder zur Versionskontrolle" :
Das Hinzufügen eines $VersionOpt-Feldes zu einer Maske ermöglicht Benutzern, neue Versionen von bearbeiteten Dokumenten auf der Basis einzelner, bearbeiteter Dokumente zu erstellen.
So erstellen Sie ein berechnetes Feld "$VersionOpt"
Verwenden Sie ein berechnetes Textfeld, wenn Sie möchten, dass alle Dokumente, die aus einer Maske erstellt wurden, dieselben Methoden zur Versionskontrolle enthalten.
1. Erstellen Sie ein Feld namens $VersionOpt und definieren Sie es als berechnetes Textfeld.
"Berechnet zur Anzeige" und "Berechnet beim Anlegen" funktionieren in dieser Situation nicht.
2. Wählen Sie "Wert" im Register "Objekte" der Infoliste im Programmierfenster.
3. Geben Sie einen der folgenden Werte im Scriptbereich ein:
Wert Art der Kontrolle
0 Keine Versionskontrolle
1 Neue Versionen werden zu Antworten, wenn die Benutzer beim Speichern eines Dokuments "Datei - Als neue Version speichern" wählen.
2 Neue Versionen werden beim Speichern automatisch zu Antworten.
3 Vorherige Versionen werden zu Antworten, wenn die Benutzer beim Speichern eines Dokuments "Datei - Als neue Version speichern" wählen.
4 Vorherige Versionen werden beim Speichern zu Antworten
5 Neue Versionen werden zu Geschwisterdokumenten, wenn die Benutzer beim Speichern eines Dokuments "Datei - Als neue Version" speichern wählen.
6 Neue Versionen werden beim Speichern automatisch zu Geschwisterdokumenten.
Das Script müsste dann so aussehen:
Sub Click(Source As Button)
'Constants for this procedure
Const FORMNAME_RESPONSE$ = "frmTest"
Const ERR_NODOCSEL_TITLE$ = "Error: No document selected"
Const ERR_NODOCSEL_MSG$ = "You need to select a document to create a response document of it."
On Error Goto ErrorHandler 'Of course we trap errors
'The dim section
Dim uiws As New NotesUIWorkspace
Dim uidocNew As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim docSel As NotesDocument
Dim docNew As NotesDocument
'We need the current database
Set db = session.CurrentDatabase
'Get current document as NotesDocument object
If Not uiws.CurrentDocument Is Nothing Then
Set docSel = uiws.CurrentDocument.Document 'Document opened in form
Elseif Not session.DocumentContext Is Nothing Then
Set docSel = session.DocumentContext 'Document selected in view
End If
If docSel Is Nothing Then 'User did not select a document
Msgbox ERR_NODOCSEL_MSG, 48, ERR_NODOCSEL_TITLE
Goto GoOut
End If
'Create new backend response document
Set docNew = db.CreateDocument
Call docNew.ReplaceItemValue("Form", FORMNAME_RESPONSE)
Call docNew.MakeResponse(docSel)
Call docNew.ReplaceItemValue("$VersionOpt","1") ' NEU !!!!!!!!!!!!!!!!!
Call docNew.Save(True, False) 'XXXXXXXXXX Das hier wollen wir eigentlich nicht ! XXXXXXXXXXX
'Finally, open new document in the frontend
Call uiws.EditDocument(True, docNew)
GoOut:
Exit Sub
ErrorHandler:
ErrorMsg
Resume GoOut
End Sub
Das hat den immensen Vorteil, dass die Maskeneigenschaften nicht geändert werden müssen.
Andreas