Hi,
ich bin fündig geworden.
Ich habe damals folgende Vorgehensweise gewählt:
1. In die Hauptmaske habe ich ein berechnetes Textfeld (Mehrfachwerte zugelassen) mit Namen xFieldList eingefügt. Als Werteformel habe ich den Feldnamen selbst eingetragen.
2. Im globalen Declarations-Abschnitt der Hauptmaske habe ich folgende Variablen deklariert:
'Variablen für Abgleich
Dim tmpAnrede As String
Dim tmpTitel As String
Dim tmpVorname As String
Dim tmpName As String
3. Im Postopen-Event habe ich die globalen Variablen mit den Feldinhalten gefüllt.
If (Not doc.IsNewNote) Then
tmpAnrede = doc.Anrede(0)
tmpTitel = doc.Titel(0)
tmpVorname = doc.Vorname(0)
tmpName = doc.Name(0)
End If
4. Im querySave-Event der Hauptmaske habe ich dann geprüft, ob sich einer oder mehrere Werte geändert haben. Wenn ja wird die funktion für den Abgleich aufgerufen.
Dim ichange As Integer
' Prüfung ob sich die, für den Abgleich relevanten, Felder geändert haben.
If Not doc.IsNewNote Then
If tmpAnrede <> doc.Anrede(0) Then
doc.GetFirstItem("xFieldList").AppendToTextList("Anrede")
ichange = True
End If 'If tmpAnrede <>...
If tmpTitel <> doc.Titel(0) Then
doc.GetFirstItem("xFieldList").AppendToTextList("Titel")
ichange = True
End If 'If tmpAnrede <>...
If tmpVorname <> doc.Vorname(0) Then
doc.GetFirstItem("xFieldList").AppendToTextList("Vorname")
ichange = True
End If 'If tmpAnrede <>...
If tmpName <> doc.Name(0) Then
doc.GetFirstItem("xFieldList").AppendToTextList("Name")
ichange = True
End If 'If tmpAnrede <>...
End If
If ichange Then
Call UpdateResponseDocs(doc)
Call doc.RemoveItem("xFieldList")
End If
Die Funktion zum Abgleich sieht so aus:
Sub UpdateResponseDocs(pdoc As NotesDocument)
On Error Resume Next
Dim collection As NotesDocumentCollection
Dim rdoc As NotesDocument
Dim objProgress As CProgressBar
Dim i As Integer
Set collection = pdoc.Responses
If collection.Count > 0 Then
For i = 1 To collection.Count
Set rdoc = collection.GetNthDocument(i)
' Abgleich von Name und Zusatzinformation
Forall s In pdoc.xFieldList
Call rdoc.ReplaceItemValue(s, pdoc.GetItemValue(s))
End Forall 'Forall s In pdoc.xFieldList
Call rdoc.ComputeWithForm(False, False)
Call rdoc.Save(True, True)
Next 'For i = 1 To collection.Count
End If 'If collection.Count > 0
End Sub
Axel