Domino 9 und frühere Versionen > ND9: Entwicklung

mehrere Dokumente per Aktion in Ansicht ändern

<< < (2/4) > >>

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