Guten Morgen,
ich bins noch mal.
Also es besteht folgendes Szenario:
ich hab eine bzw. zwei Forms in beiden sind beliebig viele Felder. Für einige dieser Felder soll eine art History erzeugt werden, in der steht wer wann was geändert hat.
Diese History Funktion (trägt in ein Feld die benötigten Werte ein)ist bereits implementiert (für ein Feld). Es wäre aber jetzt vollkommen uneffektiv diesen Code in jedes Feld zu schreiben. Deshalb will ich einen Agenten der läuft falls sich ein Feldwert geändert hat.
Die Änderung überprüfe ich derzeit noch in den Events Entering bzw. Exiting und rufe in Exiting meine History Funktion auf.
Sub Entering(Source As Field)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
'Save field content on entry to compare on exit
Set uidoc = workspace.CurrentDocument
sFieldOnEntry1 = uidoc.FieldGetText("P_Status")
'sFieldOnEntry1 ist eine globale Variable
End Sub
Sub Exiting(Source As Field)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim p_status,author As Variant
Dim t_d,his_string As String
Set db = s.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc=uidoc.Document
p_status = uidoc.FieldGetText("P_Status")
p_status=Cstr(p_status)
'If nothing has changed exit sub
If p_status=sFieldOnEntry1 Then
Exit Sub
'Project status has changed, make new entry in history
Else
t_d=Cstr(doc.LastModified)
author=doc.Authors(0)
his_string=" ;"&author &" "& t_d & " " & p_status & " ;"
Call uidoc.FieldAppendText("P_Status_History",his_string)
End If
Call doc.Save(False,True)
End Sub
Das Problem ist jetzt das ich dem Agenten nicht sagen kann in welchem Feld er aufgerufen wurde, damit er nur für dieses die die History Funktion ausführt.
Vielleicht habt ihr eine Idee wie und ob man das umsetzen kann.
LG
Jana