Moin,moin alle zusammen.
Folgende Konstellation: In Maske A werden Personaldaten gespeichert, in Maske B werden Krankenkassendaten gespeichert. Wenn sich jetzt in Maske A die Krankenkasse eines Mitarbeiters ändert, soll in Maske B die Gesamtzahl der Versicherten pro Krankenkasse neu berechnet werden.
Ich habe mir dafür folgenden Agenten geschrieben:
Sub Initialize
Dim work As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim s As New NotesSession
Dim db As notesdatabase
Dim doc As NotesDocument
Dim view As NotesView
Dim Kürzel As NotesItem
Dim item As NotesItem
Set db = s.CurrentDatabase
Set view = db.GetView("Krankenkassen Beitragssätze")
Set doc = view.GetFirstDocument
For i= 1 To view.AllEntries.Count
Set kürzel = doc.GetFirstItem("Kassenkürzel")
Set item = doc.ReplaceItemValue("Versicherte",AnzahlVersicherte(Kürzel.Text))
Call doc.Save(True,True)
Set doc = view.GetNextDocument(doc)
Next i
End Sub
Function AnzahlVersicherte(Kürzel As String)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim MitarbeiterKürzel As NotesItem
Dim Vorname As NotesItem
Dim Nachname As NotesItem
Dim VersichertenName As String
'Versicherte suchen und zuweisen
Set db = s.CurrentDatabase
Set view = db.GetView ("aktive" )
Set doc = view.GetFirstDocument
Dim i As Integer
For i = 1 To view.AllEntries.Count
Set MitarbeiterKürzel = doc.GetFirstItem("Kassenkürzel")
If mitarbeiterkürzel.Text = Kürzel Then
AnzahlVersicherte = AnzahlVersicherte +1
End If
Set doc = view.GetNextDocument(doc)
Next i
End Function
Der Agent funktioniert einwandfrei, allerdings habe ich das Problem, dass die Option "nachdem ein Dokument erstellt oder geändert wurde" ein Zeitfenster von bis zu 30 min. einräumt. Der Agent muss aber direkt nach der Änderung starten.
Habe es mit dem Terminate-Ereignis der Maske A probiert, musste aber feststellen, dass er dann genau das geänderte Dokument nicht berücksichtigt, weil dieses ja noch "offen ist".
Welche Möglichkeiten gäbe es den Agent direkt nach Dokumentänderung zu starten?
In den Optionen stand noch, dass das Zeitfenster zur Laufzeit geändert werden kann. Ich habe hierzu aber nichts in der Hilfe gefunden.
Gruß
Demian