Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jmanuel am 17.01.06 - 10:10:23
Titel: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 17.01.06 - 10:10:23
Hallo,
ich versuche in einem RichText ein anderes RichText einzufügen. Das ganze Funktioniert solange ich ohne Schnickschnack ein RT an das andere anhänge. Erzeuge ich jedoch eine Tabelle (NotesRichTextTable) und versuche nun das RichTextItem dort einzufügen, dann kommt die Fehlermeldung: Method is not available.
... Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL) Call rt.BeginInsert(rtnav) Call rt.AppendText( " " ) If doc.HasItem("Body") Then Set importRT = doc.GetFirstItem("Body") End If If dxlrt.Type = RICHTEXT Then Call rt.AppendRTItem( importRT ) <= hier KAPUTT: Füge ich Text ein, dann kein Problem end if ...
Kann mit bitte jemand helfen ? Gruss, Manuel
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: Axel am 17.01.06 - 10:23:55
Meines Wissens kannst du in eine Tabelle nur Text einfügen und kein weiteres Feld.
Axel
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: ata am 17.01.06 - 10:48:05
... im Objekt NotesRichTextTable gibt es keine Methode .AppendRTItem()... Eben wie es die Fehlermeldung korrekt benennt...
Toni
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 17.01.06 - 11:00:43
Hi,
das rt in dem Beispiel ist das NotesRichTextItem.
hier nochmal das ganze Beispiel. (habe nicht alle Deklarationen hier eingebracht)
Dim rt As NotesRichTextItem Dim rtImport As NotesRichTextItem Dim doc As NotesDocument
Dim rtnav As NotesRichTextNavigator Dim rtt As NotesRichTextTable
Set rtnav = rt.CreateNavigator() Set rtt = rtnav.GetFirstElement(RTELEM_TYPE_TABLE) Call rtnav.GetFirstElement(RTELEM_TYPE_TABLECELL) Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call rt.BeginInsert(rtnav)
Set doc = db.GetDocumentByUNID("DA3479C0D72E5DB6C12570F900345B1E") If doc.HasItem("Body") Then Set rtimport = doc.GetFirstItem("Body") End If If rtimport.Type = RICHTEXT Then 'Call rt.AppendRTItem( rtimport ) 'geht nicht Call rt.AppendText("Hier bin ich") 'geht End If Call rt.EndInsert
Call doc.Save(True,False)
Das beispiel liefert in der ersten Zelle den Text "hier bin ich". Importiere ich jedoch den Inhalt des rtimport RichtText-Feldes kommt die Nachricht: Method is not available
es wäre super wenn jemand die Ursache kennt. Gruss, Manuel,
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: ata am 17.01.06 - 13:49:43
... erweitere die Validierung des Richtextfeldes mal um die Validierung des rt-Objektes mit:
Code
If rtimport.Type = 1 And rt.Type = 1 Then
Eventuell ist das Richtext-Feld nur ein einfaches Textfeld - könnte sein...
Toni
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: umi am 17.01.06 - 14:38:27
Aus der Desingerhilfe: The insertion occurs at the end of the item.
Denke nicht das Du den Inhalt in die Tabelle bekommst.
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 17.01.06 - 15:14:47
Hallo,
@all: danke für die Antworten. @Toni: If rtimport.Type = 1 And rt.Type = 1 Then hab ich eingebaut und es ist ein RichText.
Desweiteren steht in der Hilfe:
By default the insertion occurs at the end of the item. You can change the insertion point with BeginInsert and EndInsert.
Daher nehme ich an, das es auch so gehen müsste.
Gruss, Manuel
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: umi am 17.01.06 - 15:22:47
Tatsächlich. In der R7 Hilfe ist das nicht mehr drin. komisch :-)
Wahrscheinlich ein Bug....
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 17.01.06 - 16:06:44
Hallo @all,
ich glaube auch. Nun habe ich lange genug ausprobiert.
Danke
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: Ralf_M_Petter am 18.01.06 - 08:49:49
Habe gerade die selbe Erfahrung gemacht, siehe http://atnotes.de/index.php?topic=28256.0
Grüße
Ralf
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 18.01.06 - 11:22:53
Hallo,
ich habe nun das Problem mit DXL gelöst. Also ich erstelle mit DXL ein Dokument mit Tabelle und mit einem modellierten Button darin. Es funktionierte nach langem rumprobieren. Gibt es eigentlich zu den DXL-Tags und der Syntaks eine Doku ?
Eine weitere Frage (eher ein Problem) zu DXL:
Wenn ich ein DXL import aus einem file.dxl auf Platte hole und importiere funktioniert es einwandfrei. Nun habe ich das selbe File als Attachment in einem Dok. Wenn ich das Attachment löse und dann über DXL importiere bekomme ich den super hässlichen Error "DXL importer operation failed"
Was passiert da ? Es sind doch die gleichen Files, oder nicht ?
Gruss, Manuel
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: Ralf_M_Petter am 18.01.06 - 11:25:45
Eventuell kannst du mal den Code posten, mit dem du das DXL löst und dann importierst. Aber vorsicht mit DXL. DXL kann viel, aber nicht alles, da einige Designporperties nicht im DXL implementiert sind. Deshalb bin ich auch so sauer, weil ich das selbe Problem wie du habe und jetzt auch auf DXL umgestiegen bin und plötzlich sehen meine Tabellen nicht mehr so aus wie ich sie haben will.
Grüße
Ralf
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 18.01.06 - 12:26:38
Hallo,
Ich habe bemerkt das das Attachment nicht alle Tags enthällt. Es ist hinten abgeschnitten. Es liegt also an dem Attachen.
hier ist der Code:
Dim s As New NotesSession Dim ws As New NotesUIWorkspace Dim db As NotesDatabase Dim col As NotesDocumentCollection Dim doc As Notesdocument Dim kp As NotesDocument Dim attachObj As NotesEmbeddedObject Dim rtAkteFile As NotesRichTextItem
Dim DxlDocumentCol As NotesDocumentCollection Dim filename As String
Set db = s.CurrentDatabase Set col = db.UnprocessedDocuments Set doc = col.GetFirstDocument Set kp = doc Set rtAkteFile = New NotesRichTextItem(kp, "files")
Set DxlDocumentCol = col If Lcase(doc.Form(0)) = "kp" Then If canShut(doc) Then Call createDXLCollection(doc , DxlDocumentCol) End If End If
REM Open xml file named after current database Dim stream As NotesStream Set stream = s.CreateStream filename$ = "C:\temp\dXLcoll.xml" If Not stream.Open(filename$) Then Messagebox "Cannot open " & filename$,, "Error" Exit Function End If Call stream.Truncate
REM Export note collection as DXL Dim exporter As NotesDXLExporter Set exporter = s.CreateDXLExporter(DxlDocumentCol) Call exporter.SetOutput(stream) Call exporter.Process
'hier habe ich auch einen Sleep reingebracht, da ich dachte das Lesen des Attachments könnte beginnen vor dem Ende des Schreibens des Files, aber das brachte auch nichts. Fakt ist, das mein dxl-File nicht Komplett ist
Set attachObj= rtAkteFile.EmbedObject( EMBED_ATTACHMENT ,"", "C:\temp\dXLcoll.xml" )
Call kp.Save(1,1)
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: Ralf_M_Petter am 18.01.06 - 12:48:37
Du solltest den Notesstream closen vor dem Attachen, den sonst passiert das was du beschreibst.
Erst bei dem Closen werden vermutlich die Buffers in das File geschrieben.
Also füge stream.close ein.
Grüße
Ralf
Titel: Re: RichTextItem: Method is not available Fehler ???
Beitrag von: jmanuel am 18.01.06 - 13:15:39