Alle Dokumente eines Views öffnen, speichern, fertig

  • Hallo zusammen,


    wahrscheinlich eine saublöde Frage aber ich möchte alle Dokumente eines Views einmal öffnen und wieder abspeichern. (Ich habe Todo's importiert, die nach dem import als "Einladungen" angezeigt werden. Nach einem Speichern sind das "echte" ToDo's).


    Gibt es dafür vielleicht irgendwo in den Weiten dieses Forums schon ein kleines Skript, das das erledigt?


    Vielen Dank für Euer Feedback


    cheers


    EKKI

  • Hallo Andreas, hallo zusammen,


    habe mir mal aus dem Internet den folgenden Agent zusammengeklaut (Bitte die Entwickler-Fraktion nicht zu detailliert hinzuschauen, ich bin eher admin ;) )



    Option Public
    Option Declare

    Sub Initialize
    MessageBox ("Entering Sub initialize")
    Dim s As New NotesSession
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Set db=s.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument
    While Not (doc Is Nothing)
    Set uidoc=ws.EditDocument(True, doc)
    Call uidoc.save
    Call uidoc.close
    Set doc=dc.GetNextDocument(doc)
    Wend
    End Sub


    Der Agent läuft auf meinem Win7/8.5.2 nicht ganz sauber, hat wohl ein memory-problem, aber macht eigentlich das, was er soll. Werde es nochmal mit einem performanten server probieren.


    Beste Grüße


    Ekki

  • Hallo Andrea, hallo zusammen,

    Da scheint mal quick ein s verloren gegangen zu sein. Oder Andrea(s) ? :D


    Die im Frontend des users zu öffnen ist auch nicht wirklich gut für die Performance.
    Probier mal das hier:


  • MaxRitti


    Das funktioniert aber nur wenn es keinen Script Code in irgendwelchen Events gibt.
    Sobald das der Fall ist bleibt nichts anderes übrig als die Dokumente im Frontend zu öffnen oder eben den gesamten Code nachzubauen.


    Und außerdem hätte dann auch das @Command schon funktioniert, wenn es so gehen würde

  • Ist das wirklich so? Man lernt ja nie aus. ;)


    Auf die schnelle habe ich das mal getestet:
    Eine DB, eine Maske, zwei Felder, davon eins manuell mit Code im Exiting-Event.
    Bei der Maske noch ein bischen Messageboxen in ein paar Events (postopen, postrecalc).
    Das zweite Feld berechnet.


    Der Code läuft da mal durch.


    Was meinst Du denn für Events?

  • MaxRitti


    Und die Messageboxen aus den Events werden dir auch beim Neuberechnen der Dokumente angezeigt ?
    Genau das ist nämlich das Problem, wenn du z.B. im QuerySave Code hinterlegt hast der auch noch Felder verändert, dann wird dieser bei einem ComputeWithForm nicht ausgeführt, bei einem Öffnen und Speichern im Frontend aber schon

  • Das ist es eben was mich wundert.
    Ich hätte zumindest erwartet, dass bei meinem Code, sofern sich ein Messagebox im PostRecalc Event befindet, diese auch angezeigt wird.


    Passiert aber nicht.


    /EDIT:


    Hat mal wieder ein wenig gedauert. Jetzt hab ichs und nu ab ins Wochenende. :P

  • Hallo MaxRitti,


    habe Andrea's Geschlecht wieder geradegerückt. Dein Code könnte in Zeile 17 noch ein Pünktchen gebrauchen. Dabei ist mir aufgefallen, dass meine Messagebox noch drin war - total überflüssig.


    Werde Deinen Code gleich mal probieren.


    Besten Dank schonmal



    Ekki

  • Um ehrlich zu sein, hatte ich inhaltlich etwas schwierigkeiten. Habe es aber so verstanden, dass, wenn ich alle Messageboxen rausnehme (also keine UI-Interaktion mehr habe) der code trotzdem laufen sollte.


    right?



    Ekki

  • Das hast du falsch verstanden. Mit den Messageboxen sollte das nur anschaulich gemacht werden.


    Der Punkt ist, wenn es in der Maske, auf der das zu berechnende Dokument basiert, Script Code in den Events gibt, dann musst du das Dokument im Frontend öffnen damit diese Berechnungen auch gemacht werden.


    Denn der Code von MaxRitti entsprcht genau der dir schon genannten @Command-Formel, die ja nicht funktioniert hat.

  • Hey MaxRitti, überhaupt kein Problem. Habe das Macro nochmal überarbeitet (es muss ein "(true)" hinter uidoc.close, dann funktioniert es auch.


    Nochmal Danke für all Eure Hilfe.


    Beste Grüße aus Köln



    cheers


    EKKI