Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Kaljamam am 26.07.17 - 10:24:13
-
Hallo zusammen,
habe in einer Ansicht mehrere Dokumente. Ich würde gerne einen Agenten schreiben, der alle ausgewählten Dokumente öffnet und speichert. Mit dem Agent kann ich ein Feld aktualisieren. Ich möchte aber nur das Dokument öffnen und speichern. An der Stelle ????????????????????? aktualisiere ich mein Feld doc.ibb_aktualisierer = "Wert", hier möchte ich jetzt aber das Dokument nur öffnen und nicht das Feld aktualisieren.
Option Public
Option Declare
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
While Not (doc Is Nothing)
?????????????????????
Call doc.Save( False, True )
Set doc = collection.GetNextDocument( doc)
Wend
End Sub
-
Soll das Dokument wirklich geöffnet werden? Also sichtbar im Client?
Wieviele Dokumente?
Warum?
Wenn es nicht wirklich einen zwingenden Grund gibt, würde ich das automatisierte Öffnen - Speichern - Schließen umgehen.
-
Der Hintergrund ist folgender:
Über einen DBLookUp
_tempUser := Vorname + " " + Name;
@If(_tempUser = ""; ""; _tempMailDB := @DbLookup("":"NoCache";"xxxxxxx":"cosmos/bim/stellenb.nsf";"Stelleninhaber";_tempUser; 2))
hole ich mir die DokumentenID von Stellenbeschreibungen der Mitarbeiter in die Mitarbeiterdatenbank, um diese dem Mitarbeiter zuzuweisen.
Mein Problem, und da hab ich ein sensationelles Brett vor dem Kopf, das berechnete Textfeld(wird über einen Transferagent aktualisiert), enthält zwar dann den korrekten Wert, aber erst wenn ich das Mitarbeiterdokument am Client öffne und speichere ist das Feld auch verfügbar.
Daher wollte ich mir einen Agenten basteln, der automatisch alle Dokumente öffnet und speichert, damit ich nicht alle Mitarbeiterdokumente manuell aufmachen und speichern muss. :-[
-
Die richtige Vorgehensweise für solche Fälle ist, die Berechnungen im Script nachzubauen und das Ergebnis in die Dokumente zu schreiben, ohne sie zu öffnen.
Wenn das Feld so berechnet ist, wie die Formel vermuten lässt, hilft auch ein Formelagent mit @Command ([ToolsRefreshSelectedDocs])
-
Vielen Dank! Das war genau das, was ich gesucht habe! :)
DBLookUp sollte auch korrekter Weise so aussehen.
tempUser := Vorname + " " + Name;
@If(@IsError(@DbLookup("":"NoCache";"xxxxxxxxx":"cosmos/bim/stellenb.nsf";"Stelleninhaber";_tempUser; 2 )); _tempMailDB := ""; _tempMailDB := @DbLookup("":"NoCache";"xxxxxxx":"cosmos/bim/stellenb.nsf";"Stelleninhaber";_tempUser; 2));
-
An dieser Stelle ist Performance vielleicht nicht so wichtig, aber Du kannst Dir ein DBLookup sparen
_tempUser := Vorname + " " + Name;
_temp := @DbLookup("":"NoCache";"xxxxxxxxx":"cosmos/bim/stellenb.nsf";"Stelleninhaber";_tempUser; 2 );
_tempMailDB := @If (@IsError (_temp); ""; _temp);