RendertoRTItem mit zugriffsgeschützten Abschnitten

  • Hallo,


    nach langer Zeit mal wieder eine Frage von mir.


    Ich habe eine Notes-DB, die über einen Agenten Daten aus anderen Notes-DB sammelt. Dazu werden die Dokumente aus der Original-DB per RendertoRTItem in die einsammelnde DB kopiert. Das funktioniert auch sehr gut und performant.
    Jetzt habe ich eine neue DB zum auslesen dazugenommen. In der Maske der einzusammelnden Dokumente ist ein zugriffsgeschützter Abschnitt. Wenn die Dokumente, die mit dieser Maske erstellt wurden, kopiert werden, ist mein RTItem komplett leer. Da ich mich dunkel dran erinnere, das ein RendertoRTItem diese Abschnitte ignoriert, habe ich versucht erstmal ein temporäres Dokument zu erstellen. Dieses fülle ich per CopyAllItems und will dann das temporäre Dokument per RendertoRTItem in mein eigentliches Dokument kopieren. Hier kommt allerdings der Fehler "Eintrag im Index nicht gefunden" in der Codezeile

    Code
    temp_doc.RenderToRTItem(rtitem)


    Ich habe auch schon versucht, das temporäre Dokument erstmal zu speichern. Erfolglos, der Fehler bleibt der gleiche. Warum verstehe ich schon mal nicht...
    Hat einer eine Idee, wie ich Dokumente sonst von einer DB in eine andere DB kopieren und anzeigen lassen kann, ohne die Masken mitzukopieren? Bzw. den Fehler beim RenderToRTItem umgehen kann? Oder wie ich den Fehler mit dem "Eintrag im Index nicht gefunden umgehe? Vielen Dank schon mal!

  • Den Fehler mit dem "Eintrag im Index nicht gefunden" konnte ich beheben. Es lag daran, das in der Ursprungsmaske noch ein DBLookup ausgeführt wurde.
    Aber das Ursprungsproblem bleibt nach wie vor bestehen.
    Auch das RenderToRTItem vom temporären Dokument liefert nur leere Werte zurück...

    • Offizieller Beitrag

    also das doc muss gespeichert werden, da Du RT-Felder mit rendern willst.


    Die Maske brauchst Du in der neuen DB, wie soll sonst das Dokument gerendert werden? Wie es sich verhällt, wenn Du die Maske im Dokument speicherst - kann ich nicht sagen, habe ich noch nicht getestet. Mal abgesehen von allen Nachteilen, die Du hast, wenn Du die Maske im Dokument speicherst.


    Was Du genau beachten musst steht in der Designer-Hilfe:

    Zitat

    Creates a picture of a document and places it into a rich text item you specify. The picture is created using both the document and its form. Therefore, the form's input translation and validation formulas are executed.

    Zitat

    The picture is created using both the document and its form. Therefore, the input translation and validation formulas of the form are executed.
    If the target rich text item is in a new document, you must save the document before calling RenderToRTItem.


    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 Dirk,


    danke für die Antwort.
    Das temporäre Dokument hatte ich auch gespeichert, aber trotzdem wird beim rendern eben nichts "mitgenommen".


    Die Maske im Dokument zu speichern halte ich auch für nicht wirklich zielführend. Die Nachteile überwiegen doch zu sehr.


    Was ich an Deinem Post aber nicht verstehe ist der Satz

    Zitat

    Die Maske brauchst Du in der neuen DB, wie soll sonst das Dokument gerendert werden?


    Das rendern geschieht in der Ursprungs-DB. Daher benötige ich in der Anzeige-DB die ursprünglichen Masken nicht. Das funktioniert auch bereits mit mehreren Datenbanken problemlos.


    Die Fälle bei denen es nicht funktioniert sind, wenn das zu rendernde Dokument Teilmasken oder eben Zugriffsgeschützte Abschnitte enthält. Diese Teile werden leider nicht gerendert.


    Bin jetzt aber dabei, eine Umgehung zu basteln, in der ich die ID des zu rendernden Dokuments übernehme sowie ein paar Kopfdaten (um was für die Ansichtenanzeige zu haben), beim öffnen des Dokuments den Workaround abgreife und das eigentliche Originaldokument öffne. Nicht wirklich elegant, scheint aber nach einem ersten Test zu funktionieren.
    Wenn ich damit mein Problem gelöst haben sollte werde ich die Lösung noch posten.

    • Offizieller Beitrag

    sorry ich hatte es so verstanden, dass das temp. Dokument in der aktuellen DB und nicht in der Quell-DB erstellt wird.


    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

  • Ist ja kein Problem.


    Ich hab es jetzt auch so umgangen wie oben beschrieben. Aus der Quelle hole ich nur noch bestimmte Kopfdaten um das Dokument zu kategorisieren. Außerdem speichere ich die Dok-ID in meinem Anzeigedokument. Wenn dieses dann zum lesen geöffnet werden soll breche ich im Postopen den Vorgang ab und öffne stattdessen das eigentliche Quelldokument. Funktioniert prima.
    Schade nur, dass das rendern nicht so ohne Probleme geht...


    Trotzdem Dank für die Hilfe