Domino 9 und frühere Versionen > ND9: Entwicklung

Extrahieren per Lotusscript bringt Fehler Type Mismatch

(1/2) > >>

lorderich:
Hallo zusammen,

ich versuche mich gerade in das Thema Lotusscript einzulesen und probiere ein wenig rum.

Dabei haeb ich mir als erstes eine Möglichkeit ausgewählt, alle Dokumente aus einer Ansicht nach einem Feld einem RichText Item mit der Bezeichnung "Userpicture" zu durchsuchen. Wenn dieses Feld eine Datei enthälst, so soll diese in eine lokal abgespeichert werden.

Das Feld Userpicture gibt es definitiv in allen Dokumenten, es kann jedoch leer sein.

Lotusscript-Code:
Sub Initialize
      Dim ss As New NotesSession
      Dim db As NotesDatabase
      Dim view As NotesView
      Dim doc As NotesDocument
      Dim rtitem As NotesRichTextItem
      Dim pathname As String
 
      pathname = "E:\images"
      Set db = ss.CurrentDatabase
      Set view = db.GetView("People")
 
      Set doc = view.GetFirstDocument
         If doc.HasEmbedded Then
            Set rtitem = doc.GetFirstItem("Userpicture")
            ForAll obj In rtitem.EmbeddedObjects
               If(obj.Type = EMBED_ATTACHMENT)Then
                  Call oBJ.ExtractFile _
                  ( pathname + "\" + obj.Name )
               End If         
               End ForAll
            End If
            Set doc = view.GetNextDocument(doc)
End Sub

---------------------
Derzeit steigt der Agent im Debug Modus jedoch immer bei der Zeile Set rtitem = doc.GetFirstItem("Userpicture") mit der Fehlermeldung "Type mismatch" aus. Logisch wäre dies meiner Meinung nach, wenn es das Feld gar nicht geben würde oder es keinen Inhalt hat, diese Prüfung führe ich meiner Meinung nach jedoch mit dem If doc.HasEmbedded Then durch.

Zum Feld selbst ist zu sagen, dass die User per XPage Upload Control in dieses Feld ein Bild von sich laden können. Inahlt des Feldes wird nicht als Mime etc. Content gespeichert.

Der zugehörige Agent soll später mal zeitgesteuert alle Dokumente in einer View durchlaufen und die in dem Feld Userpicture vorhandenen Bilder auf die Festplatte bringen.

Vielleicht übersehe ich ja etwas, aber irgendwie steig ich gerade nicht hinter die Fehlermeldung und warum der Debugger diese auswirft.

Danke schonmal fürs drüber schauen.

MFG

Der Lordi

koehlerbv:
Die NotesRichTextItem-Class kennt keine Methode GetFirstIgtem. Je nach Kontext verwende NotesItem oder Variant.

m3:
Bernhard, er macht ja auch  "doc.GetFirstItem()" und das sollte funktionieren, wenn "Userpicture" auch wirklich ein RichTextItem ist. Ansonsten liefert es naemlich NotesItem zurueck, was in diesem Fall das Problem sein dürfte.

koehlerbv:
Nö, nö - die Methode gibt es wirklich nicht für RTIs, und auch die brave DesignerHelp verwendet bei den Beispielen beispielsweise für GetEmbeddedObject Variant as Type für RTI-Objekte.

Bernhard

lorderich:
Hallo zusammen,

ich habe gerade mal in der Form nachgeschaut, dass Feld "Userpicture" ist definitiv in Feld mit dem Typ Rich-Text.

Darin gespeichert ist ein z.B. ein Image im PNG Format. Das sollte doch daher ein RichTextItem sein, oder?

Wenn ich Dim rtitem As Variant definiere, dann steigt der Debugger bei der Zeile "ForAll obj In rtitem.EmbeddedObjects" mit der Fehlermeldung "Instance Member EMBEDDObjects does not exist". aus.

Jetzt verstehe ich gerade nur noch Bahnhof.

MFG

Der Lordi

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln