Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
-
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
-
Hallo,
oder über ein Datenbank-Profil.
Gruß
Christian
-
Gibt schöne Beispiele in der Hilfe welches sogar auch auf FeldInhalte zurückgreift ;)
Call session.SetEnvironmentVar _
("HomeTown",source.FieldGetText("[Field]"))
lg
Andy
-
Hi,
vielen Dank, habt mir echt geholfen.
Also bis bald und noch mal ein dickes DANKESCHÖN
:)
LG
-
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
-
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