Solved

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

Posted on 2008-11-03
3
336 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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Problem "Can you help me recover my changes?  I double-clicked the attachment, made changes, and then hit Save before closing it.  But when I try to re-open it, my changes are missing!"    Solution This solution opens the Outlook Secure Temp Fold…
Notes Document Link used by IBM Notes is a link file which aids in the sharing of links to documents in email and webpages. The posts describe the importance and steps to create a Lotus Notes NDL file in brief.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used.

789 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