Manage Learn to apply best practices and optimize your operations.

Creating custom views in Lotus Notes databases

Get code and instructions to set up a Domino agent that lets users easily create custom views in Lotus Notes databases.

This tip will allow users to easily create custom views in Lotus Notes databases. To accomplish this, the user fills out a view creation document that acts as the instructions for the new view. An agent then runs overnight and generates the new view based on a view template.

Here is the code:

 Sub Initialize
 Dim s As New NotesSession
 Dim viewTemplate As NotesView
 Dim NewView As NotesView
 Dim db As NotesDatabase
 Dim col1 As NotesViewColumn
 Dim col2 As NotesViewColumn
 Dim formula As String
 Set db = s.CurrentDatabase  
 server = db.Server     
 filepath = db.FilePath

 Set Lookupdb = s.GetDatabase(server,filepath)
 Set NewViews_LookupView = 
 Set NewViews_docs = 
NewViews_LookupView.GetAllDocumentsbyKey("1", False)
 Set NewViews_doc = 
 For a = 1 To NewViews_docs.Count

"View hierarchy"
 in this example, all views have 3-4 levels of hierarchy
  Main = NewViews_doc.MainFolder(0)
  Sub1 = NewViews_doc.SubFolder1(0)
  Sub2 = NewViews_doc.SubFolder2(0)
  Sub3 = NewViews_doc.SubFolder3(0)
  If Sub3 = "" Then
   NewViewName = Main + "" + Sub1 + "" + Sub2
   NewViewName = Main + "" + Sub1 + "" + Sub2 + "" + Sub3
  End If
  NewViewAlias = NewViews_doc.ViewAlias(0)
  PCenter = NewViews_doc.PCenter(0)
  Level = NewViews_doc.ProcessingLevel(0)
  ViewDatabase = NewViews_doc.Database(0)
"Determine which view 
template to use" 
in this example there are 8 pre-set templates  
  If Main = "Unprocessed" Then
   formula = "SELECT  (PCenter = """ & 
PCenter & """ & PrintedBy =  "" &  ProcessedBy = "") "
   If Level = "1" Then
    Set viewTemplate = 
   Elseif Level = "2" Then
    Set viewTemplate = 
   Elseif Level = "3" Then
    Set viewTemplate = 
   Elseif Level = "4" Then
    Set viewTemplate = 
   End If
  Elseif Main = "Printed" Then
   formula = "SELECT  
(PCenter = """ & PCenter & """ 
& PrintedBy !=  "" &  ProcessedBy = "") "
   If Level = "1" Then
    Set viewTemplate = 
   Elseif Level = "2" Then
    Set viewTemplate = 
   Elseif Level = "3" Then
    Set viewTemplate = 
   Elseif Level = "4" Then
    Set viewTemplate = 
   End If
  End If
'---Create the view based on the template
   Set NewView = s.CurrentDatabase.
CreateView(NewViewName, formula, viewTemplate)
   NewView.Aliases = NewViewAlias

'---Set View Creation Documents status
  'Set NewView = s.CurrentDatabase.
CreateView(NewViewName, "SELECT @All")
  StatusDate = Format(Now(),"mm/dd/yyyy hh:mm ampm")
  NewViews_doc.ViewStatus = "2"
  NewViews_doc.ViewStatusMessage = 
& Chr(10) & "View created " & StatusDate
  Call NewViews_doc.Save(True, False)
  Set NewViews_doc = 
End Sub

Do you have comments on this tip? Let us know.

This tip was submitted to the tip library by member Amy Crisanti. Please let others know how useful it is via the rating scale below. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.

Dig Deeper on Lotus Notes Domino Agents



  • Favorite iSeries cheat sheets

    Here you'll find a collection of valuable cheat sheets gathered from across the iSeries/ community. These cheat ...

  • HTML cheat sheet

    This is a really cool cheat sheet if you're looking to learn more about HTML. You'll find just about everything you every wanted ...

  • Carol Woodbury: Security

    Carol Woodbury