Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: js84 am 19.05.05 - 16:24:09

Titel: Agenten mit Übergabeparametern aufrufen
Beitrag von: js84 am 19.05.05 - 16:24:09
Hallo alle miteinander.

Weiß jemand ob es möglich ist einem Agenten den ich lokal aufrufe irgendwelche Parameter mit zu geben,lso zum Beispiel Feldwerte, die der Agent verarbeiten soll?

MfG
Jana
Titel: Re: Agenten mit Übergabeparametern aufrufen
Beitrag von: adminnaddel am 19.05.05 - 16:31:30
Hi,

ich würde die entsprechenden Parameter in die notes.ini schreiben und sie mit dem Agenten vorweg cachen!

GetEnvironmentValue method
SetEnvironmentValue method

lg
Andy
Titel: Re: Agenten mit Übergabeparametern aufrufen
Beitrag von: chris2212 am 19.05.05 - 16:34:10
Hallo,

oder über ein Datenbank-Profil.

Gruß
Christian
Titel: Re: Agenten mit Übergabeparametern aufrufen
Beitrag von: adminnaddel am 19.05.05 - 16:37:15
Gibt schöne Beispiele in der Hilfe welches sogar auch auf FeldInhalte zurückgreift  ;)

Call session.SetEnvironmentVar _
("HomeTown",source.FieldGetText("[Field]"))

lg
Andy
Titel: Re: Agenten mit Übergabeparametern aufrufen
Beitrag von: js84 am 19.05.05 - 16:46:53
Hi,

vielen Dank, habt mir echt geholfen.

Also bis bald und noch mal ein dickes DANKESCHÖN
 :)


LG
Titel: Re: Agenten mit Übergabeparametern aufrufen
Beitrag von: js84 am 20.05.05 - 09:26:50
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
Titel: Re: Agenten mit Übergabeparametern aufrufen
Beitrag von: Axel am 20.05.05 - 09:34:13
Hi,

du hast recht, dass ist nicht sehr effektiv. Außerdem ist das Ganze im Exiting - Event auch noch ziemlich unsicher. Denn es ist nicht sichergestellt, dass der Event auch wirklich ausgeführt wird.

Besser ist es, den Feldinhalt der entsprechenden Felder im PostOpen-Event der Maske in Variablen auszulesen und im QuerySave-Event zu prüfen, ob der Feldinhalt geändert wurde und dann anhand des Ergebnisses die Histrory zu schreiben.


Axel