Domino 9 und frühere Versionen > ND9: Entwicklung
mehrere Dokumente per Aktion in Ansicht ändern
Stefan B.:
Formelsprache
meine Aktion beinhaltet nur folgende Befehle:
FIELD PrzHinweiseAm:=@Today;
FIELD PrzHinweiseVon:=@UserName;
FIELD PrzInterviewDatum:=@Today;
Wenn ich diese zum Beispiel in einen Agenten packe und über die Aktion in der Aktionsleiste dann nicht direkt diese Befehle laufen lasse, sondern angebe, er soll mir den Agenten mit diesen Ausführen, macht er es auch auf mehrere ausgewählten Dokumente. Also die Befehle sind schon korrekt- das Problem ist also, dass ich eben über die Aktion in der Aktionsleiste nicht angeben kann, dass er diese auf alle gewählten Dokumente wiederholt anwenden soll.....
Die Behelfslösung über dass die Aktion den Agent startet funktioniert, dafür muss ich aber wenn ich mehrere solche Anwendungsfälle habe viele Agenten erstellen... daher die Frage ob es nicht einen einfacheren Weg gibt
Peter Klett:
Lotus Script
--- Code: ---Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim col As NotesDocumentCollection
Set col = db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc = col.GetFirstDocument
Do While Not doc Is Nothing
doc.PrzHinweiseAm = Today
doc.PrzHinweiseVon = session.Username
doc.PrzInterviewDatum = Today
Call doc.Save (True, True)
Set doc = col.GetNextDocument (doc)
Loop
--- Ende Code ---
Ist wesentlich mehr Text, aber nur ein Element
EDIT: Allerdings würde ich das in eine Bibliothek auslagern (oder in einen Agenten), damit das, wenn es in mehreren Ansichten benötigt wird, nicht mehrfach gebaut und gewartet werden muss. Von daher lohnt sich auch die Auslagerung über einen Formelagenten. Mehrfach verwendbar, aber nur einmal zu pflegen
Stefan B.:
Klasse! Vielen Dank es funktioniert wie gewünscht. ;D
hatte noch das Problem, dass die Ansicht nicht automatisch die Spalte aktualisiert, daher habe ich zu deinem Skript noch
eine Aktualisierungsbefehl ergänzt:
Dim uiws As New NotesUIWorkspace
Call uiws.ViewRefresh
Gesamt läuft es jetzt so:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim col As NotesDocumentCollection
Set col = db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc = col.GetFirstDocument
Dim uiws As New NotesUIWorkspace
Do While Not doc Is Nothing
doc.PrzHinweiseAm = Today
doc.PrzHinweiseVon = session.Username
doc.PrzInterviewDatum = Today
Call doc.Save (True, True)
Call uiws.ViewRefresh
Set doc = col.GetNextDocument (doc)
Loop
End Sub
Peter Klett:
Bin ja nicht pingelig, aber einmal refreshen würde reichen
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim col As NotesDocumentCollection
Set col = db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc = col.GetFirstDocument
Dim uiws As New NotesUIWorkspace
Do While Not doc Is Nothing
doc.PrzHinweiseAm = Today
doc.PrzHinweiseVon = session.Username
doc.PrzInterviewDatum = Today
Call doc.Save (True, True)
Call uiws.ViewRefresh
Set doc = col.GetNextDocument (doc)
Loop
Call uiws.ViewRefresh
End Sub
ronka:
Da du einen Collection hast, kannst du auch mit Stampall alle felder in alle dokumente in einem Schlag setzen, ohne loop.
Sprich:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uiws As New NotesUIWorkspace
Dim col As NotesDocumentCollection
Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments
col.stampall( "PrzHinweiseAm" , today )
col.stampall( "PrzHinweiseVon" , Session.Username )
col.stampall( "PrzHinweiseDatum" , today )
Call uiws.ViewRefresh
End Sub
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln