Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: enny am 09.11.05 - 13:46:13

Titel: Probleme mit NotesRichTextNavigator
Beitrag von: enny am 09.11.05 - 13:46:13
Hallo zusammen,

habe da ein kleines Problem:

Ich versuche in Dokumenten gespeicherte Objekte als Datei zu speichern um die Objekte
gegen Anhänge auszutauschen.
Eigentlich stellt das für mich kein Problem dar, doch leider stehen über den Objekten
Beschriftungen. -> Anhang steht nicht mehr unter Beschriftung -> keiner hat eine Ahnung was
welcher Anhang ist!!!
Meine Idee war mit Hilfe eines NotesRichTextNavigators an die Position des Objekts zu
springen das Objekt zu löschen und den Anhang einzuhängen. Dann weiter zum nächsten
Objekt usw.
Leider scheitere ich beim Einsatz des Navigators, da dieser anscheinend nicht richtig
erstellt wurde (bekomme kein Objekt beim Aufruf von GetFirstElement bzw. SetPosition(Objekt)
bringt eine Fehlermeldung das entweder das Objekt oder der Navigator nicht richtig
initialisiert wurde).

Folgenden Code habe ich bisher:

Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim handle As Variant
   Dim rtitem As NotesRichTextItem
   Dim rtnav As NotesRichTextNavigator
   Dim obj As NotesEmbeddedObject
   Dim i, j As Integer
   
   Set db = s.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   
   For i = 1 To dc.Count
      Set doc = dc.GetNthDocument(i)
      
      If doc.HasEmbedded Then
         Set rtitem = doc.GetFirstItem("Body")
         
         Set rtnav = rtitem.CreateNavigator
         Set obj = rtnav.GetFirstElement(9)
         
         While( Not (obj Is Nothing))
            rtnav.SetPosition(obj)
            
            If obj.Type = 1453 Then
               Set handle = obj.Activate(True)
               If Instr(1, obj.Class, "Word.Document") Then
                  handle.SaveAs("C:\temp\doc" + Format(j+1,"00") + ".doc")
                  obj.Remove
                  Call rtitem.EmbedObject(1454, "", "C:\temp\doc" + Format(j+1,"00") + ".doc")
               Elseif Instr(1, obj.Class, "Excel.Sheet") Then
                  handle.SaveAs("C:\temp\doc" + Format(j+1,"00") + ".xls")
                  obj.Remove
                  Call rtitem.EmbedObject(1454, "", "C:\temp\doc" + Format(j+1,"00") + ".xls")
               Elseif Instr(1, obj.Class, "AmiProDocument") Then
                  handle.SaveAs("C:\temp\doc" + Format(j+1,"00") + ".sam")
                  obj.Remove
                  Call rtitem.EmbedObject(1454, "", "C:\temp\doc" + Format(j+1,"00") + ".sam")
               End If
            End If
            Set obj = rtnav.GetNextElement
         Wend
         Call doc.Save(True,False)
      End If
   Next
End Sub


Titel: Re: Probleme mit NotesRichTextNavigator
Beitrag von: enny am 10.11.05 - 15:15:00
So als zusätzlicher Hinweis:

 Set obj = rtitem.EmbeddedObjects(0)
 Call rtnav.SetPosition(obj)

gibt den Fehler "Element or Navigator is invalid"
Titel: Re: Probleme mit NotesRichTextNavigator
Beitrag von: enny am 15.11.05 - 13:06:12
Also habe noch ein bißchen getestet.

Agent auf Java umsetzen -> selber Fehler

Habe auch Notes R7 ausprobiert -> selber Fehler

Funktioniert allerdings mit Einschränkungen unter Verwendung von FindNthElement.
Problem beim Einsatz von FindNthElement ist das ich folgenden Fehler bekomme:

Warnung: Ein Teil des Dokuments, das eine Funktion aus einer anderen Notes-Version verwendet, wird ignoriert

Dieser Fehler tritt leider nur bei manchen Dokumenten auf und zwar bei denen die auf
unserem alten R5 bzw. R4.6 Server bereits angelegt wurden.

Werde wegen der Fehlermeldung einen weiteren Thread öffnen.

Zum anderen Thread: http://atnotes.de/index.php?topic=27031.0