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
Hier ist der Code (auf das Wesentliche gekürzt)
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?