Solved

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

Posted on 2008-11-03
3
333 Views
Last Modified: 2013-12-18
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.
0
Comment
Question by:cinamitton
  • 2
3 Comments
 
LVL 1

Accepted Solution

by:
johnjardin earned 500 total points
ID: 22867185
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.

John

Sub UpdateChildDocs( uidoc As NotesUIDocument )
	' VARIABLES
	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
	
	' CODE
	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 )
		
	Wend
	
End Sub

Open in new window

0
 

Author Comment

by:cinamitton
ID: 22867297
Thanks for the quick response,  I will test the code to see if it works in our application.
0
 

Author Closing Comment

by:cinamitton
ID: 31512679
Many thanks for the code,

It is working great!!!!!
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For users on the Lotus Notes 8 Standard client, this article provides information on checking the Java Heap size and adjusting it to half of your system RAM in attempt to get the Lotus Notes 8.x Standard client to run faster.  I've had to exercise t…
This article covers general Notes 8.5 troubleshooting information including recreating the Notes\Data folder.
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question