Autor Thema: mehrere Dokumente per Aktion in Ansicht ändern  (Gelesen 4790 mal)

Stefan B.

  • Gast
mehrere Dokumente per Aktion in Ansicht ändern
« am: 14.02.20 - 07:42:53 »
Hallo in die Runde,

ich bitte mal wieder um eure "Schwarmintelligenz" zur Lösung eines Problems.

Ich möchte gerne in einer Datenbank mehrere Dokumente zeitgleich markieren/auswählen können um dann über eine Aktion in der Aktionsleiste bestimmte Felder des Dokumentes abzuändern. Meine Aktion funktioniert soweit korrekt, aber  leider wird diese immer nur dabei auf ein Dokument angewendet und zwar das zuletzt fest gewählte. Wenn ich mehrere Dokumente in der Ansicht markiere und die Aktion ausführe, ändert er mit trotzdem nur 1 Dokument und nicht alle gewählten.

Wie muss ich vorgehen, dass meine Aktion auf alle gewählten Dokumente angewendet wird?

Vielen Dank für Rückmeldungen!

Beste Grüße

Stefan Beck  


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #1 am: 14.02.20 - 07:46:32 »
Ziel: alle ausgewählten Dokumente

Stefan B.

  • Gast
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #2 am: 14.02.20 - 07:51:46 »
Danke für die schnelle Rückmeldung,

wo genau kann ich das Ziel: alle ausgewählten Dokumente für die Aktion einstellen? Sorry ich finde es nicht;-/

Ich weiß, dass man bei einem Agenten unter Allgemein das Ziel angeben kann..... aber in einer Aktion habe ich diese Einstellmöglichkeit so nicht?

Muss ich meine Aktion so bauen, dass diese nur einen Agenten startet der dann auf alle ausgewählten Dokumente geht? Kann die Aktion nicht gleich direkt alle gewählten Dokumente nehmen?
« Letzte Änderung: 14.02.20 - 07:55:31 von Stefan B. »

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #3 am: 14.02.20 - 08:23:22 »
In einen Aktion kann mann das nicht auswählen.

Da muss der Aktion selber das machen.

Formel Sprache oder Lotusscript womit ist das programmiert ?
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #4 am: 14.02.20 - 08:26:23 »
Du hattest in Deiner Anfrage KEINE wirklich hilfreichen Informationen mitgeliefert, was Du wie machen willst.

Also soll es eine Aktion in einer Ansicht sein. In Formelsprache rufst Du einen entsprechenden Agenten auf, der das entsprechende Ziel eingetragen hat, in Script gehts Du über NotesDatabase.UnprocessedDocuments

EDIT: Ah, Du schreibst Aktionsleiste, die gibt es nur in der Ansicht, nicht als Agent. War also doch eine Information da, die ich überlesen hatte ;)
« Letzte Änderung: 14.02.20 - 08:32:07 von Peter Klett »

Stefan B.

  • Gast
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #5 am: 14.02.20 - 08:33:29 »
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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #6 am: 14.02.20 - 08:42:14 »
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

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
« Letzte Änderung: 14.02.20 - 08:46:04 von Peter Klett »

Stefan B.

  • Gast
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #7 am: 14.02.20 - 08:52:56 »
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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #8 am: 14.02.20 - 09:26:14 »
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

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #9 am: 14.02.20 - 13:47:37 »
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
« Letzte Änderung: 14.02.20 - 13:51:07 von ronka »
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #10 am: 14.02.20 - 15:04:39 »
StampAll hat den Nachteil, dass die Dokumente bei jedem Aufruf gespeichert werden. Dagegen bin ich allergisch, deswegen loope ich lieber. Ich würde auch noch bei jedem Feld prüfen, ob das Dokument überhaupt gespeichert werden muss. Muss nichts geändert werden, muss auch nciht gespeichert werden.

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #11 am: 14.02.20 - 19:04:47 »
Ich stimme dir zu das einen gute programmierer so etwas macht, aber eins der nur schnell felder hinzufügen möchte, was hier, glaube ich wenigstens, gewollt war, würde sich über den Zeit gewinn welches hier statt findet mit den StampAll sicherlich mehr freuen.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #12 am: 16.02.20 - 07:45:07 »
Zitat
StampAll hat den Nachteil, dass die Dokumente bei jedem Aufruf gespeichert werden.

Bist Du dir sicher?

Ich habe es mal traced.

Öffnen der Datenbank und Speichern eines Documnets sieht so aus

Code
07:29:59.775	ns^[nserver:2BFC:1094] [EM005:after] ec11.nsf NT000004C2,sq=329 803 
[8008: VIEW DEFAULT] [fEM_NSFNOTEOPEN:420]
07:30:21.106	ns^[nserver:2BFC:263C] [EM066:after] ec11.nsf:NT00000F42,sq=13 6A14DDC4072F15CCC125847B002DC112
[0001: DOCUMENT] [0080:] [fEM_NSFNOTEUPDATEEXTENDED:385]


Im While Loop sieht das bei 3 markierten Dolumenten so aus

Code
07:30:42.323	ns^[nserver:2BFC:5D0] [EM066:after] ec11.nsf:NT00000E12,sq=11 B4ADA72E23EFDC125840C002BD985 
[0001: DOCUMENT] [0085: FORCE NOCOMMIT] [fEM_NSFNOTEUPDATEEXTENDED:385]

07:30:42.336	ns^[nserver:2BFC:1A40] [EM066:after] ec11.nsf:NT00000EC2,sq=21 3F9F2640C53800B2C12578090031B03F 
[0001: DOCUMENT] [0085: FORCE NOCOMMIT] [fEM_NSFNOTEUPDATEEXTENDED:385]

07:30:42.339	ns^[nserver:2BFC:5D0] [EM066:after] ec11.nsf:NT00000F42,sq=14 6A14DDC4072F15CCC125847B002DC112
[0001: DOCUMENT] [0085: FORCE NOCOMMIT] [fEM_NSFNOTEUPDATEEXTENDED:385]


Und beim stampAll ?

Da werden keine events getriggert.

Also würde ich mal behaupten, daß die o.a. Anmerkung, daß jedes Mal gespeichert wird nicht richtig ist.

Ich interpretiere das auch anhand der Beschreibung in der Designer Hilfe so.

Zitat
The item values are immediately written to the back-end documents.

Man muss auch nicht prüfen, ob der gleiche Wert schon vorhanden ist.

Zitat
This method does not modify existing NotesDocument objects.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #13 am: 16.02.20 - 08:52:00 »
Zitat
This method does not modify existing NotesDocument objects. Documents must be retrieved again to see the changes.

Es fehlte noch ein Satz und die Hilfe erklärt, dass nach einem nutzen von Stampall die Backend-Variablen neu initiiert werden müssen, da diese Änderungen sonst nicht mitbekommen.

Die Methode Stampall ändert immer die Dokumente und erhöht die Seq.-Num der Items.
« Letzte Änderung: 16.02.20 - 09:30:17 von jBubbleBoy »
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #14 am: 16.02.20 - 22:30:30 »
Bist Du dir sicher?
Ja, zumindest aus meiner Sichtweise ;)

Dieses Script

Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Set db = session.CurrentDatabase
	Dim col As NotesDocumentCollection
	Set col = db.AllDocuments
	Call col.StampAll ("Feld1", "x")
	Call col.StampAll ("Feld2", "y")
	Call col.StampAll ("Feld3", "z")
End Sub

hinterlässt in den Dokumenten drei Speicherzeitpunkte (in $Revisions). Das würde ich als dreimal gespeichert bei drei StampAll-Aufrufen interpretieren.

Ob physisch dabei wirklich ein Schreibvorgang stattgefunden hat, darüber habe ich noch nie nachgedacht, mich interessieren die Spuren, die man in den Dokumenten hinterlässt. Das ist das, was sich ein Revisor vielleicht einmal anschaut, wann das Dokument geändert wurde.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #15 am: 16.02.20 - 22:49:22 »
Man muss auch nicht prüfen, ob der gleiche Wert schon vorhanden ist.
Zitat
This method does not modify existing NotesDocument objects.
Den gleichen Agent vom obigen Post noch einmal auf die gleichen Dokumente ausgeführt, ändert die Dokumente noch dreimal, obwohl inhaltlich keine Änderung notwendig ist.

Also man muss die Werte prüfen und man muss loopen, wenn man nur dann an den Dokumenten Speicherungsspuren hinterlassen will, wenn es wirklich notwendig ist. StampAll ist wirklich ne feine Sache, ich nutze das aber nur, wenn ich nur ein einziges Item ändern will und definitiv weiß, dass jedes Dokument geändert werden muss, den neuen Wert also nicht enthalten kann (z.B. bei einem Zeitstempel)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #16 am: 17.02.20 - 16:06:05 »
Ich würde auch eher durchloopen. StampAll hat mich so oft verar***, dann wurden Felder einfach nicht umgesetzt etc.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: mehrere Dokumente per Aktion in Ansicht ändern
« Antwort #17 am: 17.02.20 - 19:06:34 »
Ich würde auch eher durchloopen. StampAll hat mich so oft verar***, dann wurden Felder einfach nicht umgesetzt etc.

Hast Du dafür ein Beispiel?
StampAll ist doch recht einfach gestrickt, wüsste nicht was da schief gehen kann - im Vergleich zur Schleife.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz