Domino 9 und frühere Versionen > ND8: Entwicklung
Probleme @DbLookUp im Agent
Jürgen Schomann:
Ich habe folgenden Agenten, der für alle ausgewählten Dokumente läuft. Dazu existiert eine Ansicht sortiert nach dem Feld F1.
FIELD F1 := "neu";
_Values := @DbLookup("" : "NoCache"; ""; "vaTestDbLookUp"; "neu"; 2);
@Prompt([Ok];"";@Text(@Elements(_Values)));
SELECT @All
der Agent modifiziert die Dokumente, so dass mit dem @DbLookup jedes mal in der Ansicht ein Dokument mehr erscheint.
@DbLookUp liefert aber immer nur die zu Beginn vorhandene Anzahl Dokumente.
Wenn z. B. vor Start des Agenten 2 Dokumente mit Feld F1 = "neu" vorhanden waren, liefert mir @DbLookUp immer nur diese 2 Dokumente obwohl durch jeden Durchlauf ein Dokument mit dem Feld F1 = "neu" mehr entsteht, also müsste 3, 4 usw. Dokumente geliefert werden.
Irgendwie sind die geänderten Dokumente anscheinend noch nicht in der Ansicht oder der Cache funktioniert nicht. Auch die Angabe 'ReCache' statt 'NoCache' ändert nichts daran.
Wenn ich den gleichen Vorgang in LotusScript wie folgt nachstelle funktioniert es:
Dim session As New NotesSession
Dim dbThis As NotesDatabase
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim dc2 As NotesDocumentCollection
Dim doc As NotesDocument
Set dbThis = session.CurrentDatabase
Set view = dbThis.GetView("vaTestDbLookUp")
Set dc = dbThis.UnprocessedDocuments
Set doc = dc.GetFirstDocument
While Not (doc Is Nothing)
If doc.IsValid And doc.UniversalID <> "" Then
Call doc.ReplaceItemValue("F1", "neu")
Call doc.Save(True, False)
Set dc2 = view.GetAllDocumentsByKey("neu", True)
MsgBox dc2.Count
End If
Set doc = dc.GetNextDocument(doc)
Wend
O. g. Agent ist nur ein stark abgerüstetes Beispiel.
Gibt es irgend eine Idee dazu?
ghostmw:
Hi,
zwei Ideen ...
zum einen, wird deine Ansicht automatisch aktualisiert lt. Eigenschaften der Ansicht?
zum zweiten ... setze die Eigenschaft "AutoUpdate" deiner Ansicht vor der Schleife auf true, damit wird bei Änderungen die Ansicht aktualisiert.
Zusätzlich ein viwXXX.refresh vor jedem getallDocumentsByKey könnte auch was bringen.
Ich denke mal, er aktualisiert die Ansicht einfach nicht, wenn sich im Hintergrund was tut.
Deswegen der refresh nach jedem Aufruf und die anderen Maßnahmen.
LG
Marco
Jürgen Schomann:
Wie gesagt in LotusScript funktioniert es ja. Die Ansicht wird automatisch aktualisiert,. Auch mit Index Verwerfen-Optionen habe ich schon probiert. AutoUpdate ist Standard = True und Refresh weiß ich auch, es ist ja nur ein stark abgerüstetes Beispiel.
Aber das Problem besteht weiter, da ich diesen Agent in der Formelsprache benötige. Das ist ein ziemlich umfangreicher Agent aus einer Fremdanwendung und ein Umstellen in LotusScript viel zu aufwendig.
ghostmw:
Ja, sorry ... war zu schnell beim Lesen.
Hmmm ...
it898ur:
Hallo,
schon mal ein @UpdateFormulaContext getestet?
Viele Grüße
André
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln