This routine illustrates how to create a new document using field values from an existing document. Let's say, for example, that you have a database that tracks projects, and a customer has just requested that a project that was previously deployed in St. Louis also be deployed in Atlanta. Using this approach, you can use the content of the existing project document as the basis for the new project document. After the project document is created, the project manager can change all references from St. Louis to Atlanta, update the target delivery dates, and assign project members.
How It Works
The CopyAllItems method associated with the NotesDocument class is used to obtain all object values and assign them to a new object. Using this method, all object values of one document (doc) are assigned to a second document (newdoc). If multiple documents are selected in the view, the code uses the first selected document as the basis for the new document. This solution creates the new document through back-end objects and then displays the document in the user interface.
Implementation
To implement, create an action button on a view and insert the following LotusScript code in the Programmer's pane. Optionally, modify or clear field values associated with the form on the new document prior to calling the Save method.
Sub Click(Source As Button)
Dim s As NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim w As NotesUIWorkspace
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim newdoc As NotesDocument
'-----------------------------------------------------------------
' Set object values
'-----------------------------------------------------------------
Set w = New NotesUIWorkspace
Set s = New NotesSession
Set db = s.CurrentDatabase
Set collection = db.UnprocessedDocuments
'-----------------------------------------------------------------
' Check if select item is a document
'-----------------------------------------------------------------
If collection.count = 0 Then
Msgbox("Please select a document. " +_
"The current item is a ""category"". ")
Exit Sub
Else
'-----------------------------------------------------------------
' Make a copy of the existing document
'-----------------------------------------------------------------
Set doc = collection.GetFirstDocument
Set newdoc =New NotesDocument(db)
Call doc.CopyAllItems(newdoc, True)
'-----------------------------------------------------------------
' Reset/Update field values
'-----------------------------------------------------------------
newdoc.FIELDA = ""
'-----------------------------------------------------------------
' Display newly created document
'-----------------------------------------------------------------
Set uidoc = w.EditDocument (True, newdoc)
End If
End Sub
An Introduction to the Lotus Domino Tool Suite
Getting Started with Designer
Navigating the Domino Designer Workspace
Domino Design Elements
An Introduction to Formula Language
An Introduction to LotusScript
Fundamentals of a Notes Application
Calendar Applications
Collaborative Applications
Reference Library Applications
Workflow Applications
Web Applications
Design Enhancements Using LotusScript
Design Enhancements Using Formula Language
View Enhancements
Sample Agents
Miscellaneous Enhancements and Tips for Domino Databases
Data Management
Security
Application Deployment and Maintenance
Troubleshooting
Appendix A. Online Project Files and Sample Applications
Appendix B. IBM® Lotus® Notes® and Domino®Whats Next?