rtitem.EmbeddedObjects => Type mismatch

    • Offizieller Beitrag

    eine Schleife über alle Dokumente in einer Db bringt mir bei einem Dokument einen "Type mismatch" (siehe Kommentare).
    Bei dem Feld "Dateianhang" handelt es sich um ein RT-Feld, habe in den Dokument Eigenschaften nachgesehen.
    Was auffällt ist, das das Feld "DateiAnhang" in diesem Dokument mehrfach vorhanden ist (alle Felder sind RT-Felder).


    Wieso kommt da ein Type mismatch? Wie komme ich da an die Dateianhänge ran - übers Dokument?


    Danke und 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

    • Offizieller Beitrag

    gehe ich das Dokument mit

    Code
    Forall i In doc.Items
       If i.Name = "DateiAnhang" Then
          ...


    durch, dann wird dieses Feld nur einmal gefunden.


    Gruß
    Dirk

  • Ist da tatsächlich ein Attachment drin ?


    Der Type Mismatch deutet drauf hin, daß rtitem.EmbeddedObjects kein Array ist, also das RichTextFeld kein Attachment hat.


    Eventuell liegt es auch daran wenn du mit AppendItemValue gearbeitet hast, denn das erstellt jeweils ein neues Item mit identischem Namen

    • Offizieller Beitrag

    auf HasEmbeded hatte ich auch schon geprüft, trotzdem blieb er an der Schleife hängen. Wie die Anhänge in die Dokumente kamen kann ich nicht sagen, es handelt sich um eine gekaufte Anwendung.


    Nachdem ich manuell versucht habe mit "Alle speichern" die Dateianhänge aus den 2 Dokumenten auf die Platte zu bringen kam die Fehlermeldung "Speichern fehlgeschlagen, Element des Dokumentes nicht gefunden". Einzeln kann ich die Anhänge speichern (Drag & Drop). Ist aber bei über 200 Anhängen nicht witzig.


    Es handelt sich um 2 Dokumente aus 30.000, bei denen dieses Verhalten auftritt.


    Da dies eine Einmalaktion ist, werde ich die wohl doch per Hand abhängen (lassen) :( .


    Danke und Gruß
    Dirk

  • Hallo Dirk,


    mehrfache RT-Felder mit dem gleichen Namen können daher kommen, wenn der Entwickler von dieser DB versucht hat, mit berechneten RT-Felder zu arbeiten. (Kannst du die DB zufällig im Designer öffnen???)


    Ist doch ein toller Gedanke: z.B. je nach Status des Docs das bearbeitbare RT-Feld_1 zu verstecken und das berechnete RT-Feld_2 mit dem Inhalt vom RT-Feld_1 sichtbar zu machen.
    Funktioniert doch bei den anderen Feld-Typen!


    Leider geht das bei RT-Felder schief...
    Es gibt solche Effekte, wie du beschrieben hast:

    Zitat


    Was auffällt ist, dass das Feld "DateiAnhang" in diesem Dokument mehrfach vorhanden ist (alle Felder sind RT-Felder).
    ...
    Fehlermeldung "Speichern fehlgeschlagen, Element des Dokumentes nicht gefunden"


    ...
    Oder die eingefügte Screenshots werden als "schwarze Löcher" angezeigt und es ist unmöglich, die ursprünglichen Bilder zu sehen...




    [color=990000]Deshalb hier - eine Botschaft an alle Entwickler: lasst die Finger weg von den berechneten Richtext-Feldern![/color]




    Die gute Nachricht ist: ich glaube, du hast die Lösung schon selbst gefunden.

    Zitat


    gehe ich das Dokument mit


    Forall i In doc.Items
    If i.Name = "DateiAnhang" Then
    ...
    durch, dann wird dieses Feld nur einmal gefunden.


    Es ist vielleicht das Original-RT-Item, in dem die Anhänge noch ganz sind.
    Lass doch den Rest deines Codes an diesem Item laufen und schau, was passiert...

  • Also ich kenne diese Fehlermeldung gerade dann wenn Anhänge eben nicht richtig im RichText gespeichert wurden oder einen Schuss abbekommen hat.


    Deswegen prüfe ich immer noch zusätzlich mit isarray darauf ob EmbeddedObjects ein Array ist. Nur dann wird nämlich ein Forall funktionieren

    • Offizieller Beitrag

    in dem Dokument gibt es keine versteckten oder berechneten RT-Felder.


    Wenn ich mit der Schleife durchgehe, dann fällt er auch auf die Nase.

    Code
    Forall i In doc.Items    If i.Name = "DateiAnhang" Then


    Übers Dokument war es das gleiche Problem

    Code
    If doc.HasEmbedded Then
       Forall o in doc.EmbeddedObjects


    Alle Anhänge waren in Ordnung, ich konnte alle einzeln abhängen, aber ein "Alle speichern" brachte oben genannten Fehler. Das Dokument konnte bearbeitet und gespeichert werden, aber der Fehler blieb erhalten.


    Ich gehe davon aus, dass im Dokument irgendetwas zerschossen war.


    Gruß
    Dirk

  • Das ist aber traurig...


    Dass es jetzt in der Maske keine berechnete RT-Felder existieren, bedeutet nicht, dass sie früher nicht drin waren...


    Was passiert, wenn du die Anhänge (alle zusammen) manuell in ein neues Dokument kopierst, das Doc speicherst und dann deinen Abhängen-Script laufen lässt?


    Gruß


    Laura

    • Offizieller Beitrag

    es waren auch früher keine berechneten RT-Felder drin, da direkt in dem RT-Feld der Dateianhang angehängt wurde.


    Das Script sollte nur die Inhalte (Dateianhänge) rausholen und dies nur einmal, weil die DB entsorgt wird. Die fehlerhaften Dokumente habe ich mitgelogt und dann per Hand exportiert.


    Gruß
    Dirk

  • Hi Dirk,


    der KB-Eintrag 1111819 beschreibt nicht 100%-ig dein Problem, aber vllt. hilft es dennoch.

    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