QueryDocumentDelete

  • Hallo zusammen,


    hab mal wieder eine kleine Herausforderung für mich.


    Situation :
    Ein Benutzer makiert z.B. 100 Dokumente in eine Ansicht um sie zu löschen.
    Im QueryDocumentDelete Event prüfe ich nun die Dokumente ob diese löschbar sind oder nicht.


    Problem :
    Wenn nun eins dazwischen ist, das nicht gelöscht werden darf und ich Continue = False setze, dann wird dies auf alle Dokumente angewand.
    Möchte das dies nur für das eine Dokuement gilt und die Anderen weiter "zum löschen" markiert werden.


    Hat jemand eine Idee oder weiss ob die überhaupt möglich ist.


    Vielen Dank für eure Hinweise.

  • Hallo taurec,


    vielen Dank erst erst einmal für deinen Tipp.
    Hier mein Script, doch so ganz will es nicht.


    Er schmeisst die Dokumente nicht raus, so dass er Sie dann weiter verarbeitet.


    Vielleicht hab ich nen Denkfehler drin?!


  • Ich weiß nicht, ob ich übers QueryDocumentDelete gehen würden. Eher würde ich einen Button in die View stellen, hinter dem sich ein Agent verbirgt, der auf selected documents zielt.


    Aber unabhängig davon: du kannst nicht auf Continue prüfen. In dem Augenblick, wo du es auf False setzt, steigt das Script aus. Du willst vielmehr die NotesDocumentCollection durchiterieren, auf die Form prüfen und im zweifelsfalle das nächste Dokument holen, um das dann zu prüfen und das aktuelle einfach links liegen lassen.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hallo RockWilde,


    das Script steigt nicht aus, wenn ich Coninue auf False setze.
    Es wird erst beendet wenn ich alles beendet ist.
    Wäre komisch wenn Notes das machen würde, dann wäre Continue = False das selbe wäre wie Exit Sub


    Ich setze Continue wieder auf true sobald ich das Dokument entfernt habe und somit wird wird der Verlauf der Events nicht untebrochen.


    Wenn ich den Button in die View baue, kann ich aber nicht abfangen wenn ein Bebnutzer [Entf] drückt, daher wollt ich es schon gern im Event handlen,

  • Ok, mein Fehler. Hab Unfug getestet grad, daher stieg mein Script aus.


    Stimmt, beim Drücken von Entf brauchst du das Event. Ich habs bisher immer so gemacht, dass ich da grundsätzlich mit False wieder rausgehe und Löschungen nur über den Agenten zulasse. Mag sein, dass ich damit zwar etwas nachbaue, was eigentlich schon vorhanden ist. Aber immerhin tuts ;)

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Das wäre auf jeden Fall eine Lösung, nur wollt ich das wenn möglich umgehen.


    Wenn sich keine andere Lösung findet werde ich dankend darauf zurückgreifen.

  • Hallo,


    hurtz
    Also Dein Script funktioniert bei mir ohne Probleme.
    Ich habe lediglich folgende kleine Aenderungen vorgenommen, jedoch dir Grundstruktur ist von Dir.



    Daher meine kleine Frage.
    Woher kommt das i bei Source.Documents.GetNthDocument(i)?


    Die If-Abfragen If Not prüfung1 Then habe ich deshalb auskommentiert, da ich nicht weiss, was Du hier machst.


    Andreas

  • Hallo ascabg,


    vielen dank, das war der Fehler.
    Die Zählvaraiable hieß vorher i daher die variable bei getNthDocument.


    Habe diese dann umbenannt und vergessen die Deklaration rauszunehmen und daher hat Option Declare nicht angesprochen.


    Manchmal schaut man wie doof auf eine script und sieht den kleinsten Fehler nicht.


    Danke.

  • Muss mich leider korrigieren.


    Es funzt nicht.
    Er läuft zwar die Dokumente durch aber er löscht sie nicht aus der Collection und verarbeitet Sie daher weiter zum löschen.

    • Offizieller Beitrag

    nur mal als Anregung:


    Setze als erstes Continue = False.
    Prüfe ob der Anwender überhaupt löschen darf.
    Mache über die NotesDocumentCollection einen FT-Serach. Als Ergebnis solltest Du eine NotesDocumentCollection erhalten, die nur noch löschbare Dokumente enthällt.
    Danach noch einen StampAll und ein Flag setzen und die Dokumente aus allen Ansichten ausblenden.


    Ein Agent läuft dann einmal pro Woche und löscht die geflagten Dokumente.


    Zusätzlich kannst Du noch 2 StampAll einbauen, die den Lösche und die LöschZeit in die Dokumente schreibt. Über eine Ansicht können die Anwender dann die gelöschten Dokumente sehen und ggf. zurück holen.


    Die Prüfung auf die Löschrechte muss sein, da nach der Vorgehensweise alle die Dokumente löschen können, die Schreibrechte auf die Dokumente haben.


    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

  • Hallo Diali,


    vielen Dank für den Tipp. hab es so gemacht und es functioniert prima.


    Ist auch klar, dass es mit dem löschen der Dokument aus Source.Documents nicht geht, das dieser Property Ja ReadOnly ist.


    Aber auf jeden Fall Vielen Dank an Alle die geholfen haben.


    MfG Stefan

    • Offizieller Beitrag

    habs mal auf erledigt gesetzt.


    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