I needed versioning for my Wiki. The older versions of each WikiPage are stored in a separate database. The version number of the WikiPage is updated each time the page is saved.
The LotusScript
In the following routine, 'OVERFLOW_DB' is a constant with the path of the database to store all the versions. After copying all the items from the original document, I've added two fields containing the original database path and the original UniqueId of the document. After saving the version document, the version number of the original is updated.
Sub makeVersion(doc As notesdocument)
On Error Goto catch
Dim s As New notessession
Dim db As NotesDatabase
Dim newDoc As NotesDocument
Set db=s.GetDatabase("", OVERFLOW_DB)
Set newDoc=db.CreateDocument
doc.CopyAllItems newDoc
newDoc.ReplaceItemValue "OrigDb", doc.ParentDatabase.FilePath
newDoc.ReplaceItemValue "OrigUnid", doc.UniversalID
newDoc.Save True, False, True
doc.ReplaceItemValue "version", doc.version(0)+1
Goto finally
catch:
Print "Error " & Err & " in line " & Erl & ": " & Error$
Resume finally
finally:
End Sub