Solved

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

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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

For beginners of Lotus Notes user this is important to know about the types of files and their location supported by IBM Notes. Mostly users are unaware about how many file types are created and what their usages are. This Article is fully dedicated…
IBM Notes offer Encryption feature using which the user can secure its NSF emails or entire database easily. In this section we will discuss about the process to Encrypt Incoming and Outgoing Mails in depth.
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

759 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now