Funktionen Kopieren/Ausschneiden/Einfügen

  • Hallo Leute,


    ich bräuchte wieder mal eure Hilfe.


    Ich habe mehrere Datenbanken, die nach dem Hauptdokument-, Antwort-, Rückantwortdokument-Prinzip aufgebaut sind (entspricht mehr oder weniger der Struktur einer Diskussionsdatenbank).


    Mein Problem:
    Ich möchte die Funktionen Kopieren/Ausschneiden/Einfügen von Hauptdokumenten (mit/ohne Antwort-Rückantwortdokumente) bzw. einzelner Dokumente mittels Menüauswahl realisieren.


    Prinzipiell funktioniert mein System, wenn ich die „richtigen“ Dokumente markiere (nur Hauptdokument oder Hauptdokument inkl. Antwortdokumente oder einzelnes Dokument) und mittels windowseigener Stgr-C Strg-X String-V Funktionen hin-und-herschiebe.


    Frage:
    Wie kann ich das ganze menügesteuert realisieren, um den User nicht zu überfordern?
    D..h wenn ich ein Hauptdokument markiere, soll er zuerst alle dazugehörigen Antwort-/Rückantwortdokumente in die Zwischenablage (oder sonst wohin?) mitkopieren, und mich beim „Einfügen“ fragen, ob ich nur das Hauptdokument oder inkl. Antwort-/Rückantwortdokumente einfügen möchte.


    Soweit ich gesehen habe, gibt’s die Commands „EditCopy“, „EditCut“, „EditPaste“.


    Nur, hab ich auf die Elemente in der Zwischenablage irgendwie Zugriff (wo kann ich da einhacken? – eventuell die Querypaste-Funktion?) oder wo soll ich die betreffenden Dokumente vorübergehend ablegen?



    Wäre für Tipps sehr dankbar.

    • Offizieller Beitrag

    im QueryPaste bekommst Du keinen Zugriff auf die Elemente in der Zwischenablage. An dieser Stelle würde ich ein Continue = False einfügen.


    Mit einer Aktion / Agent kannst Du es lösen


    - NotesDocumentCollection über alle selektierten Dokumente
    - Abfrage, was kopiert werden soll
    - aus der DC nur die Hauptdokumente kopieren (doc.isResponse = False)
    - falls Antworten mit kopiert werden sollen, dann zu dem Quell-Hauptdokument die Antworten suchen (dc_Antworten = doc.Responses)
    - Antworten kopieren und zu jeder Antwort und Rückantwort ... die Antworten Suchen und kopieren)
    - ein kopiertes Dokument kannst Du mit doc.MakeResponse zu einem Antwortdokument des Kopierten-Hautdokumentes machen.


    Ist nur grob skizziert.


    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

  • Zitat


    Diali wrote:
    im QueryPaste bekommst Du keinen Zugriff auf die Elemente in der Zwischenablage. An dieser Stelle würde ich ein Continue = False einfügen.
    Dirk


    Ein kleines Bsp. zur Verdeutlichung:


    Userbeispiel:
    Hauptdokument = HD Antwortdokument = AW


    Bsp-Struktur:
    HD1
    ---AW1.1
    ---AW1.2
    ---AW1.3
    ------AW1.3.1
    ------AW1.3.2
    HD2
    ---AW2.1
    ---AW2.2
    ------AW2.2.1
    ------AW2.2.2


    jetzt möchte ich mittels Menüauswahl "Dokumente Kopieren und woanderst einfügen":


    - ich gehe auf AW2.2 -->Bearbeiten --> Kopieren
    - ich gehe auf AW1.1 --> Bearbeiten --> Einfügen unter AW1.1 inkl. AW


    ergibt:
    HD1
    ---AW1.1
    ------KopieAW2.2
    ------KopieAW2.2.1
    ------KopieAW2.2.2
    ---AW1.2
    ---AW1.3
    ------AW1.3.1
    ------AW1.3.2


    HD2
    ---AW2.1
    ---AW2.2
    ------AW2.2.1
    ------AW2.2.2


    Das muss man irgendwie rekursiv gestalten, nur wie kann ich die Dokumente in der Zwischenablage angreifen, den ich brauch sozusagen einen Klon dieser Dokumente und muss dann die $Ref "umbiegen".
    Kann ich bei Querypaste irgendwie jedes Dokument vorm Einfügen abfangen?

    • Offizieller Beitrag

    markieren musst Du die Dokumente sowieso. Ob Du jetzt ein STRG+C oder eine Schaltfläche benutzt ist eigentlich egal.


    Mit NotesDatabase.UnprocessedDocuments oder NotesView.UnprocessedDocuments bekommst Du eine NotesDocumentCollection mit genau den markierten Dokumenten.


    Ein NotesDocument.CopyToDatabase(NotesDatabase) kopiert Dir dieses Dokument und mit NotesDocument.MakeResponse(NotesDocument) kannst Du das Dokument zu einem AnntwortDokument machen.
    In etwa so müsste es funktionieren.


    habs nicht getestet und hoffentlich keine Tip-Fehler drin.


    Gruß
    Dirk

  • Zitat


    Diali wrote:


    habs nicht getestet und hoffentlich keine Tip-Fehler drin.


    Gruß
    Dirk


    hallo dirk,


    vorerst mal vielen dank für deine mühen!
    werd's mal testen.


    lg....robert

  • Zitat


    Diali wrote:
    habs nicht getestet und hoffentlich keine Tip-Fehler drin.


    Gruß
    Dirk


    Hallo,


    die Idee gefällt mir an und für sich ganz gut, aber:


    ** da mir das Picklist-Fenster zu klein ist -> wäre es auch möglich, dass ich ohne Picklist auskomme (da es mir optisch besser gefallen würde)?


    Ich stelle mir das folgendermassen vor:
    1)in meiner Ansicht markiere ich die gewünschten zu kopierenden Dokumente (so wie vorgeschlagen)
    2) ich klicke in meinem Menü auf "Dokumente" -> "kopieren" (CopyAgent)- jetzt lies ich die gewählten Dokuemente in die Kollektion ein und demarkiere die gewählten Dokumente
    3) ich gehe in meiner Ansicht auf das Zieldokument
    4)ich klicke in meinem Menü auf "Dokumente" -> einfügen (InsertAgent) - Vorgang kopieren wird gestartet


    Frage:
    Wie kann ich vom InsertAgent auf die Dokumente der Kollektion des CopyAgent zugreifen?

    • Offizieller Beitrag

    bei Notes 6 kannst Du das Fenster vergrößern (Mauszeiger auf rechte untere Ecke der Picklist), dabei wird ein Eintrag in der Notes.ini erstellt und beim nächsten Picklist-Fenster wird die Picklist wieder in der gleichen Größe dargestellt. Diesen Parameter in der Notes.ini könntest Du vorher per Script setzen.


    Die DC kannst Du leider nicht von einem Agent zum Anderen übergeben. Alternativ kannst Du Dir die DokumentUniqueIDs der Dokumente aus der Colection in die Notes.ini schreiben und dann im 2. Agent die Parameter der Notes.ini auslesen.


    Gruß
    Dirk

  • Zitat


    Diali wrote:
    bei Notes 6 kannst Du das Fenster vergrößern (Mauszeiger auf rechte untere Ecke der Picklist), dabei wird ein Eintrag in der Notes.ini erstellt und beim nächsten Picklist-Fenster wird die Picklist wieder in der gleichen Größe dargestellt. Diesen Parameter in der Notes.ini könntest Du vorher per Script setzen.


    Die DC kannst Du leider nicht von einem Agent zum Anderen übergeben. Alternativ kannst Du Dir die DokumentUniqueIDs der Dokumente aus der Colection in die Notes.ini schreiben und dann im 2. Agent die Parameter der Notes.ini auslesen.


    Gruß
    Dirk


    würde das eventuell auch mit einem Profildokument funktionieren, ich denke dabei an @SetProfileField/@GetProfileField - also ich speichere einfach die ID's der Dokumente ab.
    Könnte diese Variante recht gut funktionieren, oder ist die eher unzuverlässig?

    • Offizieller Beitrag

    ja müsste funktionieren. Dann muss der 2. Agent die IDs wieder aus dem Profildokument entfernen. Benutze aber unbedingt ein persönliches Profildokument (aufruf mit Username), damit es zu keinen Komplikationen kommt, wenn mehrere User gleichzeitig Deine Agenten starten.


    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

  • Zitat


    Diali wrote:
    ja müsste funktionieren. Dann muss der 2. Agent die IDs wieder aus dem Profildokument entfernen. Benutze aber unbedingt ein persönliches Profildokument (aufruf mit Username), damit es zu keinen Komplikationen kommt, wenn mehrere User gleichzeitig Deine Agenten starten.


    Gruß
    Dirk


    genauso hab ich's mir gedacht - danke - werd's jetzt mal versuchen