Lotus Notes FAQ Visit Our Sponsor!

How do you create a document access counter?

@function Technique
A computed-for-display field with the following formula will act as a counter for Notes and web access with a timestamp and keeping the counter by document id fields within a single profile document:

  profilename := "Page Usage Count";
  docid := @Text(@DocumentUniqueID);
  timestamp := @Now;
  count := @GetProfileField(profilename; "Count"+docid);
  @If(count=""; 
    @Do(@Set("count";1); @SetProfileField(profilename; "TimeStamp"+docid; timestamp)); 
    @Do(@Set("timestamp";@GetProfileField(profilename; "TimeStamp"+docid)); @Set("count"; count+1)));
  @SetProfileField(profilename; "Count"+docid; count);
  "This page has been accessed " + @Text(count) + " times since " + @Text(timestamp; "D0T1S2")


LotusScript Technique
Create an agent using this code:

Sub Initialize
 Dim Session As New NotesSession
 Dim ProfileDoc As NotesDocument
 Dim doc As NotesDocument
 Dim num As Double
 Dim NumStr As String

  Set db = Session.CurrentDatabase

 'The following line gets a handle to the current document
  Set doc = Session.DocumentContext

 'The following line creates a Profile document called 'Domino' the first time 'it is executed and from then on modifies the existing 'Domino' document
  Set ProfileDoc = db.GetProfileDocument("Domino")

  NumStr = ProfileDoc.num(0)
  If NumStr = "" Then
    num = 1
  Else
    num = Cdbl(NumStr) + 1
  End If

  ProfileDoc.num = Cstr(num)
  Call profiledoc.save(False,False)

  doc.Number = num

End Sub

Make the agent Shared and select "Run Once (@commands may be used)" for the option "Which document(s) should it act on". Name it whatever you desire (for example: "Counter") and save. Please be aware that Notes has a limit on the number of fields you can have in a form, so you cannot have an infinite number of these counters.

On the form you wish to keep the counter on, create a number field named Number. Also add a computed text field named $$QueryOpenAgent. As the formula for this field, put in quotes whatever you named your agent (for example: "Counter").


Applies to Notes Versions: 4.5, 4.6, 5
Last Modified: September 8, 1999