Autor Thema: FindFirstElement(RTELEM_TYPE_TABLE) findet keine Tabellen  (Gelesen 5503 mal)

Offline noeffred

  • Frischling
  • *
  • Beiträge: 11
Servus

ich stehe vor einem Rätsel: ich habe ein Rich Text Feld mit einer Tabelle, die automatisch generiert wird, sofern noch keine vorhanden ist. An diese Tabelle will ich nun bei jedem Speichern eine neue Zeile hinzufügen. Also dachte ich mir, ich suche das Feld, mache einen RichTextNavigator, suche die Tabelle, hänge eine Zeile an und füll die neuen Zellen.
Nun wird aber jedesmal wenn ich das Dokument speichere, eine neue Tabelle eingefügt, da FindFirstElement(RTELEM_TYPE_TABLE) keine Tabelle findet. Wie kann das sein?  :-:

Das AppendTable haut hin, und die neu eingefügte Tabelle funktioniert auch ohne Probleme - aber die bestehende findet das Script nicht.

Bei der Zeile "If Not rtnav.FindFirstElement(RTELEM_TYPE_TABLE)  Then" haben Notes und ich scheinbar andere Ansichten von der Welt  ;D

Hier ist der Code (auf das Wesentliche gekürzt)
Code
Sub Postsave(uidoc As Notesuidocument)
	Dim session As New NotesSession
	Dim doc As NotesDocument
	Dim uiw As New notesuiworkspace
	Dim rtitem As Variant
	Dim rtnav As NotesRichTextNavigator	
	Dim workspace As New NotesUIWorkspace
	
	Set doc=uidoc.Document	
	
	' get the abbreviated user name
	Set uname= New NotesName(session.UserName)
	username = uname.Common
	
	' get now and comment
	jetzt = Format(Now,"Long Date")
	comment  = Inputbox("Bitte geben Sie einen Kommentar zur Revisionskontrolle ein.","Kommentar")
	
	' get the element we write into	
	Set rtitem = doc.GetFirstItem("doc_revision")
	Set rtnav = rtitem.CreateNavigator
	
	' check for existing table, create one if there's none
	If Not rtnav.FindFirstElement(RTELEM_TYPE_TABLE)  Then
		Call rtitem.AppendTable(1,3)
		Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)
		
		Dim richStyle As NotesRichTextStyle
		Set richStyle = session.CreateRichTextStyle
		richStyle.Bold = True
		Call rtitem.AppendStyle(richStyle)
		
		Call rtitem.BeginInsert(rtnav)
		Call rtitem.AppendText ("Datum")
		Call rtitem.EndInsert
		
		Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
		
		Call rtitem.BeginInsert(rtnav)
		Call rtitem.AppendText ( "Benutzer" )
		Call rtitem.EndInsert
		
		Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
		
		Call rtitem.BeginInsert(rtnav)
		Call rtitem.AppendText ( "Bemerkung" )
		Call rtitem.EndInsert
		
		Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
		
		richStyle.Bold = False
		Call rtitem.AppendStyle(richStyle)
		
	End If
	'
	
	' add a new row to the table
	Call rtnav.FindFirstElement(RTELEM_TYPE_TABLE)
	Dim table As NotesRichTextTable
	Set table = rtnav.GetElement
	Call table.AddRow(1)
	
	Dim content(2) As String
	
	content(0)=jetzt
	content(1)=username
	content(2)=comment
	
	Call rtnav.FindNthElement(RTELEM_TYPE_TABLECELL, table.RowCount*3 - 2) ' finds the last row, the first cell
	
	Forall element In content
		Call rtitem.BeginInsert(rtnav)
		Call rtitem.AppendText (element)
		Call rtitem.EndInsert
		Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
	End Forall
	
	Call doc.Save(True,True)
	
End Sub

Das ganze spielt sich nach dem Speichern des Dokuments ab und der Code samt RT Feld ist in einer Teilmaske drinnen - falls das eine Rolle spielt, was ich mir nicht vorstellen kann...

Irgendwo muss ich einen Denkfehler haben oder etwas übersehen haben.

Hat da jemand eine Idee?

Offline noeffred

  • Frischling
  • *
  • Beiträge: 11
Re: FindFirstElement(RTELEM_TYPE_TABLE) findet keine Tabellen
« Antwort #1 am: 11.05.09 - 16:29:08 »
Hat da wirklich keiner eine Idee dazu?  ???

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE) findet keine Tabellen
« Antwort #2 am: 24.05.18 - 15:19:25 »
Gibt es hier eigentlich eine Lösung? Habe das gleiche Problem.

Gruß, Volker

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: FindFirstElement(RTELEM_TYPE_TABLE) findet keine Tabellen
« Antwort #3 am: 24.05.18 - 16:14:03 »
Du gräbst nicht wirklich einen 9 Jahre alten Thread aus, oder?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: FindFirstElement(RTELEM_TYPE_TABLE) findet keine Tabellen
« Antwort #4 am: 24.05.18 - 16:33:25 »
Moin Tode,

es hat ja sonst niemand drauf geantwortet.

Ich versuche eine per Script erstellte Tabelle in einem Richtext-Feld nach erneutem Öffnen des Dokumentes zu aktualisieren, aber nach
Set rtitem = doc.GetFirstItem(rtfeld)
Set rtnav = rtitem.CreateNavigator
Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)      
Call rti.BeginInsert(rtnav)

aber bekomme immer die Meldung "Element or Navigator is invalid"

Erstelle ich eine neue Tabelle und führe ein Reopen aus, kann ich auf die Tabelle zugreifen, aber nach Schließen und erneuten Öffnen nicht.

Gruß, Volker

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz