mehrere Dokumente: 1. Compose, 2. Print, 3. Close

  • hi,
    ich habe hier eine db mit mehreren dokumenten. bei dieser dokumeten handelt es sich um eine db für prüfberichte. dabei soll das ganze wie folgt abgehen:


    1. es werden dokumente markiert
    2. diese werden dann neu erstellt (mit compose), gespeichert und gedruckt


    habe mal hier gesucht, aber das was ich zu agenten und drucken gefunden haben, funz nicht bei mir (okay ich musste das ändern ;) )


    thx
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...

    • Offizieller Beitrag

    wie sieht Dein Agent jetzt aus (code)? Welcher Fehler kommt? An welcher Stelle im Agent kommt der Fehler?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • so schauts aus (hatte nur das drucken probiert...)


    Sub Initialize
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim session As New NotesSession
    Dim jview As NotesView
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set jview = db.GetView("Bestellungen")
    Call uidoc.Print(1)
    Call uidoc.Close
    End Sub


    aber, so mit wenig ahnung von script ;)
    ich hatte es als formel versucht, brachte aber einen
    fehler wg der verwendung von ui-befehlen


    @PostedCommand([Compose];"Prüfbericht");
    @PostedCommand([FileSave]);
    @PostedCommand([FilePrint]);


    thx
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...

    • Offizieller Beitrag

    so sollte es gehen. Habs nicht getestet - also bitte erst testen!



    Falls Du fehler bekommst schalte mal den Debugger ein und poste hier die fehlerhafte Zeile.


    Gruß
    Dirk

  • Hi,


    mbender
    Ich habe noch nicht so richtig verstanden, was Du machen willst. Wenn Du die neuen Dokumente erstellst, mußt Du doch irgendetwas damit anfangen / reinschreiben - sonst erzeugst Du doch nur Datenmüll.


    Diali
    Die doc.xxxx Sequenz zwischendurch kannst Du Dir eigentlich sparen - ein uidoc.save sollte dasselbe erledigen (auch ohne Nachfrage). Zur Not kann mann ja noch ein berechnetes "SaveOptions"-Feld in die Maske aufnehmen.

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • okay, das vorgehen ist komplett so:


    1. es werden nachts aus unserer WaWi "offene Bestellungen" übernommen (notrix-datenpumpe, (Form=Bestellungen)
    2. morgen soll unser einkauf für alle neuen bestellungen einen prüfbericht erstellen. dazu öffnet er die "offenen Bestellungen" und erstellt aus dieser maske eine neue maske namens "Prüfbericht". (neu deshalb, weil durch einen abgleich eine bestellung nach wareineingang aus der db rausfliegt und somit das dokument mit Form=Bestellung weg wäre).
    3. das neue dokument "prüfbericht" soll gespeichert und gedruckt werden (beim speichern wird eine lfd-nr vergeben)
    4. wenn der wareneingang geprüft hat wird das dokument "prüfbericht" ausgefüllt um die offenen felder



    das ist das ziel...


    thx
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...

  • Diali:
    aha, das klappt, prima ;) (sogar mit der änderung zum speichern)
    aber nur für das letzte dokument der auswahl :(


    ich habe in den eigenschaftes des agenten gesagt: all selected docs


    thx
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...

    • Offizieller Beitrag

    eventuell reicht es das Feld Form in "Prüfbericht" zu ändern. Je nachdem wie Ihr Eure DatenPumpe eingerichtet habt.


    Ansonsten kannst Du mit

    Code
    set dc = db.UnprocessedDocuments

    Dir alle markierten Dokumente holen und dann mit

    Code
    set doc_dc = dc.GetFirtsDocument
    While not doc_dc is Nothing
      doc_dc.Form = "Prüfbericht"
      doc_dc.Save True, true, true
      set uidoc = ws.EditDocument(True, doc_dc)
      Call uidoc.Save
      Call uidoc.Print(1)
      Call uidoc.Close
      set doc_dc = dc.GetNextDocument(doc_dc)
    Wend

    alle Dokumente durchgehen.


    Gruß
    Dirk


    lodsnods
    mit Notes 4.5 kam immer die Abfrage nach dem Speichern bei call uidoc.Save. Habe mir dann die oben genannte Version angewöhnt und nie wieder den Uidoc.Save probiert.

  • jau, also, das script sieht jetzt so aus:


    Sub Initialize
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim db As NotesDatabase
    Set db = ws.CurrentDatabase.Database
    Set uidoc = ws.ComposeDocument("worksolingen/bhnord", "\brangs\Prüfberi.nsf", "Prüfbericht")
    Dim doc As NotesDocument
    Set doc = uidoc.Document
    Set dc = db.UnprocessedDocuments
    Set doc_dc = dc.GetFirstDocument
    While Not doc_dc Is Nothing
    doc_dc.Form = "Prüfbericht"
    doc_dc.Save True, True, True
    Set uidoc = ws.EditDocument(True, doc_dc)
    Call uidoc.Save
    Call uidoc.Print(1)
    Call uidoc.Close
    Set doc_dc = dc.GetNextDocument(doc_dc)
    Wend

    End Sub



    bleibt aber an der stellen "hängen", wo es eigentlich speichern sollte...
    thx
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...

    • Offizieller Beitrag

    Er speichert 2 mal. Welche Zeile meinst Du?
    doc_dc.Save True, True, True
    oder
    Call uidoc.Save


    Gruß
    Dirk

  • habs mal gedebugged. der springt bei der schleife direkt ans ende und durchläuft diese gar nicht erst. dann steht er im document im edit-mode
    cu
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...

    • Offizieller Beitrag

    das Dokument öffnest Du schon vor der Schleife mit der Zeile


    Set uidoc = ws.ComposeDocument("worksolingen/bhnord", "\brangs\Prüfberi.nsf", "Prüfbericht")


    schau mal nach der Zeile
    Set dc = db.UnprocessedDocuments
    im Debugger nach dem Count der dc. Die muss >0 sein, damit er Dokumente bearbeitet.


    Gruß
    Dirk

    • Offizieller Beitrag

    hast Du Dokumente markiert?


    Hast Du Suchkriterien in den Agenteneigenschaften stehen?


    "All selected documents" ist noch als Eigenschaft drin?


    Gruß
    Dirk

  • Eventuell könnte es daran liegen wie du dir das db-Objekt holst. Nämlich über den UIWorkspace


    Probier es mal folgendermaßen:


    Set ses = New NotesSession
    Set db = ses.CurrentDatabase


    und hol dir dann die UnprocessedDocuments

  • nope, leider nicht. hm, soll ich db mal mit 2 testdoc uploaden auf nen webserver?
    thx
    marc

    ......
    Dieser Eintrag wurde nach bestem Wissen und ohne Gewissen erstellt :hammer: ...