Irgendwie stehe ich auf dem Schlauch.
Habe ein Dokument, welches Antwortdokumente besitzt. Diese Antwortdokumente können unter umständen ebenfalls Antwortdokumente enthalten. Nun möchte ich bei Änderung des Feldes imHauptdokument bei allen Antwortdokumenten und Antworten auf Antworten diesen Feldinhalt ebenfalls durchschreiben. Bis zum ersten Antwortdokument ja kein Problem, aber ich würde dies geren mit einer Art schleife machen, damit das alles dynamisch und nicht fest ist. Einmal kann es nur ein Antwortdokument geben, ein anderes mal mehrere. Dioe Dokument, die ihrerseit wieder Antwortdokumente besitzen haben die Form "Kapitel" die restlichen die Form "Inhalt". Kapitel kann somit sowohl wieder ein Kapitel, als auch Inhalt als Antwortdokumente haben, usw.
Habs mal so angedacht, aber das funktioniert so nicht:
sub Änderung(doc as NotesDocument)
...
Set col=doc.Responses
Set respdoc=col.GetfirstDocument
While Not respdoc Is Nothing
call respdoc.ReplaceItemValue("Berechtigung",doc.Berechtigung)
call respdoc.save(False,False)
if respdoc.Form(0)="Kapitel" then call Änderung(respdoc)
set respdoc.GetNextDocument(respdoc)
wend
Beim verschachteln wird ja doc mit respdoc überschrieben. Denke ich hier irgendwo um die ecke, bzw. kann mir jemand den Kntoen im Kopf lösen.
Danke im voraus
2stupid4this
Ich habe das Aktualisierungsproblem bei Antwortdokumenten so gelöst:
Die Referenzfelder im AW-Dokument sind vom Typ berechnet mit der Formel
@If(@IsNewDoc;FeldImHauptDok;@GetDocField($Ref; "FeldImHauptDok"))
Die Option Formeln übernehmen Werte aus gewähltem Dokument in der Maske muss hierfür aktiviert sein.
Falls Du diese berechneten Felder in den Antwortdokumenten zeitnah aktualisieren willst, kannst Du das über ein LS ähnlich dem, mit dem Du es versucht hast im QuerySave erreichen:
Sub updateResponses(Source)
Dim doc As NotesDocument
Dim rdoc As NotesDocument
Dim dc As NotesDocumentCollection
Dim success As Variant
Set doc = Source.document
Set dc = doc.responses
If Not (dc Is Nothing) Then
Set rdoc = dc.GetFirstDocument
While Not ( rdoc Is Nothing )
success = rdoc.ComputeWithForm( False, False )
If success Then
Call rdoc.Save( False, False )
End If
Set rdoc = dc.GetNextDocument(rdoc)
Wend
End If
End Sub
Ansonsten tuts ein Agent, der alle Antwortdokumente per @Command( [ToolsRefreshAllDocs] ) aktualisiert