Need help creating an Agent to refresh @dblookup fields in all documents using the same form.

Have a small database with Distributor information.  There are 2 forms one for the company and one for the contacts at each company.  Company information is pulled into the Contact form using @dblookup fields.  Problem is when there is a change made on the company form it does not update on the contact form at the same time.  Would like an agent that could do the updates or some other method to keep the information in sync.
Who is Participating?
johnjardinConnect With a Mentor Commented:
The best way to do this, is to create a function in a script library, and reference that function in the PostSave Event of your company doc:

So, the PostSave event of your company doc will look like this:

Sub PostSave(Source As Notesuidocument)

        ' Update Contact Docs
        Call UpdateChildDocs( Source )

End Sub

The UpdateChildDocs event will then look something like what I've added in the code snippet area. This will make everything real time. Hope this helps.


Sub UpdateChildDocs( uidoc As NotesUIDocument )
	Dim ss As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim col As NotesDocumentCollection
	Dim companydoc As NotesDocument
	Dim contactdoc As NotesDocument
	Dim key As String
	Dim mustsave As Boolean
	Set companydoc = uidoc.Document
	Set db = ss.CurrentDatabase
	Set view = db.GetView( "ViewAliasName" )	' The Alias Name of the View you looking up to 
	key = companydoc.LookupKey(0)	' This is the key you were using in the DBLookup
	Set col = view.GetAllDocumentsByKey( key, True )
	Set contactdoc = col.GetFirstDocument
	' For Each Doc found in the DB Lookup
	While Not( contactdoc Is Nothing )
		' Reset the Must Save Flag
		mustsave = False
		' Check all fields to see if values are the same
		If companydoc.FieldName1(0) <> contactdoc.FieldName1(0) Then
			Call contactdoc.ReplaceItemValue( "FieldName1", companydoc.FieldName1(0) )
			mustsave = True
		End If
		If companydoc.FieldName2(0) <> contactdoc.FieldName2(0) Then
			Call contactdoc.ReplaceItemValue( "FieldName2", companydoc.FieldName2(0) )
			mustsave = True
		End If
		' If changes have been made, then Save
		If mustsave Then
			Call contactdoc.Save( True, True )
		End If
		Set contactdoc = col.GetNextDocument( contactdoc )
End Sub

Open in new window

cinamittonAuthor Commented:
Thanks for the quick response,  I will test the code to see if it works in our application.
cinamittonAuthor Commented:
Many thanks for the code,

It is working great!!!!!
All Courses

From novice to tech pro — start learning today.