FAQ Home :
How do you update a field in response documents after it is changed in the parent document?
How do you update a field in response documents after it is changed in the parent document?

AnswerAssumptions:
1) The name (or synonym) of the Response form is "TASK" and it inherits field values.
2) The name of the field to synchronize is "STATUS" in both Project and Task forms. This is computed when composed to inherit from the parent form.
Include the following Script code in the QuerySave event of the parent form:
Sub QuerySave(Source As Notesuidocument, Continue As Variant)
Dim Collection As NotesDocumentCollection
Dim Doc As NotesDocument
Dim Form, ParentStatus, Status As String

Set Doc = Source.Document
Set Collection = Doc.Responses
Set Doc = Collection.GetFirstDocument
ParentStatus = Source.FieldGetText("STATUS")
While Not ( Doc Is Nothing )
Form = Doc.GetItemValue("Form")(0)
Status = Doc.GetItemValue("Status")(0)
If (Form = "TASK")And (Status <> ParentStatus) Then
Call Doc.ReplaceItemValue( "STATUS", ParentStatus )
Call Doc.Save (True, False)
End If
Set Doc = Collection.GetNextDocument(Doc)
Wend
End Sub
Gerard O'Sullivan posted this more general-purpose solution to place in the QuerySave event (the above solution only goes down one level):
%REM
Function: UpdateResponseDocs
Input(s): Nothing
Output(s): Nothing
Purpose:
Updates the appropriate fields in the response docs
by replacing the appropriate item values from the the parent
Authored By: Ger O'Sullivan
Authored Date: 07-Mar-2002
Last Modified By: Ger O'Sullivan
Last Modified Date: 07-Mar-2002
%END REM
Sub UpdateResponseDocs()
RoutineName="UpdateResponseDocs"
Dim arr_fieldsToSet(6) As String
arr_fieldsToSet(0) = "<fieldName_0>"
arr_fieldsToSet(1) = "<fieldName_1>"
arr_fieldsToSet(2) = "<fieldName_2>"
arr_fieldsToSet(3) = "<fieldName_3>"
arr_fieldsToSet(4) = "<fieldName_4>"
arr_fieldsToSet(5) = "<fieldName_5>"
arr_fieldsToSet(6) = "<fieldName_6>"
Call RecursiveSetResponseDocs(note, arr_fieldsToSet)
End Sub
%REM
**************************************************************
Function: RecursiveSetResponseDocs
Input(s): NotesDocument
Variant
Output(s): None
Purpose:
Loop through the list of response documents,
checking to see if these responses have responses
themselves. We do this by recursively calling the same
function but passing the response object instead.
****************************************************************
Authored By: Ger O'Sullivan
Authored Date: 07-Mar-2002
Last Modified By: Ger O'Sullivan
Last Modified On: 07-Mar-2002
%END REM
Sub RecursiveSetResponseDocs(_
doc As NotesDocument, _
v_fieldsToSetList As Variant)
RoutineName = "RecursiveSetResponseDocs #1"
Dim item As NotesItem
Dim threadIndent As String
Dim collection As NotesDocumentCollection
Dim currentResponse As NotesDocument
Dim s_fieldToSet As String
'With the current doc object, get a collection of it's responses
Set collection = doc.Responses
'Ensure that we have a vald collection otherwise, skip on to the next document.
'If (collection.Count > 0) Then
RoutineName = "RecursiveSetResponseDocs #2"
'Get a handle on the first document
Set currentResponse = collection.GetFirstDocument
'Loop through the list of response documents, checking to see if these responses have responses
'themselves. We do this by recursively calling the same fununion but passing the response object instead.
While Not ( currentResponse Is Nothing )
Forall v_fieldToSet In v_fieldsToSetList
s_fieldToSet = Cstr(v_fieldToSet)
'Get a handle on the item
Set item = doc.GetFirstItem(s_fieldToSet)
If (currentResponse.HasItem(s_fieldToSet)) Then
If (item.Type = RICHTEXT) Then
Call currentResponse.ReplaceItemValue(s_fieldToSet, item.text)
Else
Call currentResponse.ReplaceItemValue(s_fieldToSet, item.values)
End If
Else
Call currentResponse.CopyItem(item, "")
End If
End Forall
Call currentResponse.Save(True, False)
' Recursive call. Check for response to responses
Call RecursiveSetResponseDocs(_
currentResponse, _
v_fieldsToSetList)
RoutineName = "RecursiveSetResponseDocs #3"
Set currentResponse = collection.GetNextDocument( currentResponse )
Wend
End Sub
Attachments -none-
Applies to versions4.x; 5.x; 6.x
FAQ Provided Byken yee
CreditClick here for information source
 Forum Latest Entries
29/07/2010 Lotus Notes Forum - AppendDocLink to Doc in Db-A to from a Doc in Db-B    (Rus)
28/07/2010 Lotus Notes Forum - Get Document from another db and appenddoc link to a field in source    (Rus)
24/06/2010 Lotus Notes Forum - Lotus Notes 6.5 Programming Certification Test    (Charles)
21/06/2010 Lotus Notes Forum - Consult    (Rogers )
09/06/2010 Lotus Notes Forum - #error : Must specify type of OS ("DOS", "OS2", etc) on C command line    (Abhi)
31/05/2010 Lotus Notes Forum - Note mail error    (Anonymous)
28/05/2010 Lotus Notes Forum - lotus notes 8 calendars & email setup...    (Dermick Vaughn)
19/05/2010 Lotus Notes Forum - Stop sending delivery and read receipts    (Simon)
19/05/2010 Lotus Notes Forum - Folder Restore Tool v2.5 is released, try for ten databases for free    (Kim van den Berg)
19/05/2010 Lotus Notes Forum - Try our Archive Solution for free for ten databases (mail/applications/quickr places)    (Kim van den Berg)
14/05/2010 Lotus Notes Forum - Adobe fillable form submit Email button not working with lotus    (Anthony )
12/05/2010 Lotus Notes Forum - Recipients on archived mails differ from regular mail    (Borja)
03/05/2010 Lotus Notes Forum - Name change only partially works    (Anonymous)
02/05/2010 Lotus Notes Forum - How to edit value in MASTER from, and backupdate MAIN form??    (Julee)
22/04/2010 Lotus Notes Forum - Note 8 Alarms Not Working    (Tony D)
07/04/2010 Lotus Notes Forum - Lotus Notes Agent to send an e-mail every month    (Lorant)
31/03/2010 Lotus Notes Forum - Lotus Notes C++, LNText Item, Unicode    (Matt)
19/03/2010 Lotus Notes Forum - Searching for a date in a document collection    (Kris Mitchell)
16/03/2010 Lotus Notes Forum - Lotus CAPI --> CSharp    (HW)
12/03/2010 Lotus Notes Forum - Notes IMAP connection    (Charl)
 Latest Tips & Tricks
10/07/2009Terminal Services Tips & Tricks - How to kill terminal server sessions. Utilities for terminal services: qwinsta and rwinsta(Steven Charles Robinson)
10/07/2009.NET Tips & Tricks - The type or namespace name could not be found (are you missing a using directive or an assembly reference?)(SCRobinson)
10/07/2009Terminate Lotus Notes Processes, Error Tips & Tricks - Lotus Notes: An Error Was Encountered While Opening A Window(Steven Charles Robinson)
26/04/2007LotusScript Mail, SMTP, Spam, Junkmail Tips & Tricks - How to drag and drop spam into junk mail filter using LotusScript(Steven Charles Robinson)
31/10/2006Terminate Lotus Notes Processes, Error Tips & Tricks - Lotus Notes: An Error Was Encountered While Opening A Window(Steven Charles Robinson)
23/10/2006Errors, SMTP, Internet Sites, Configuration, Administration, Domino 7 Tips & Tricks - Domino authentication is not enabled in the smtp internet site document(Steven Charles Robinson)
20/10/2006Articles Tips & Tricks - Have you see our recent arcticle in "The View": Proven techniques for abstracting UI from data using XML, XSL and Domino.(Steven Charles Robinson)
26/09/2006.NET Tips & Tricks - If your looking for .NET tips visit http://www.codedotnet.net(S C Robinson)
25/09/2006Using Lotus Notes Tips & Tricks - Save the Window state of a Lotus Notes client on shutdown.(Steven Charles Robinson)
22/09/2006NET, Culture, Globalization Tips & Tricks - How to find out the current culture in a .NET application.(Steve C Robinson)
© 2003 notes411.com. All rights reserved. Disclaimer. site designed & developed by appsworks.com
Lotus Notes is a registered trademark of IBM. This site is not affiliated with IBM or Lotus.
 News

 Google Box
 Sponsor
ClearCase, Subversion, WebSphere Consulting
 Best in the Industry
Lotus Notes & Domino FAQ