Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Demian am 11.07.06 - 10:25:57

Titel: Agent bei Dokumentänderung
Beitrag von: Demian am 11.07.06 - 10:25:57
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

Titel: Re: Agent bei Dokumentänderung
Beitrag von: Lossa am 11.07.06 - 10:29:04
Hi,

benutzte das Postsave Ereignis.

Dann ist das Dokument gespeichert und dann kannst du es mit zählen.

Titel: Re: Agent bei Dokumentänderung
Beitrag von: Demian am 11.07.06 - 10:53:42
Hallo Lossa,

genau das wars. Vielen Dank, es funktioniert einwandfrei.

Das Postsave-Ereignis ist mir irgendwie noch gar nicht aufgefallen  :)

Gruß
Demian