Autor Thema: Problem beim Auslesen einer Tabelle aus einem RichTextFeld  (Gelesen 1614 mal)

Offline Matthias78

  • Frischling
  • *
  • Beiträge: 4
Hallo,

ich habe folgendes Problem.
Ich habe ein Dokument mit einem RichText Feld. Dieses Feld enthält eine NotesTabelle.

Ich muss nun die einzelnen Zellen dieser Tabelle (im QueryOpen) auslesen und in Arrays umspeichern, damit die Infos weiterverarbeitet werden können.

Grundsätzlich funktioniert das auch, jedoch gibt es in der letzten Tabellenspalte einen mehrzeiligen Text. Und hier liegt mein Problem ich bekomme leider immer nur die erste Zeile aus dieser Zelle.

Gibt es hier eine Möglichkeit den gesamten Text aus dieser Zelle auszulesen ?

Danke schon mal im voraus.
Gruß
Matthias

----------
Dim doc As NotesDocument
Dim rtitem_bodyhitlist As NotesRichTextItem
Dim rtnav_table As NotesRichTextNavigator
Dim rttable As NotesRichTextTable
Dim rtrange As NotesRichTextRange
Dim rows As Integer
Dim columns As Integer
Dim Inhalt As String

Dim array_subject() As String
Dim array_from() As String
Dim array_sendto() As String
Dim array_posteddate() As String
Dim array_abstract() As String

Set doc = source.Document

'Wenn Feld bodyhitlist vorhanden und Anzahl Treffer > 0
If doc.HasItem("bodyHitlist") And doc.numHits(0) > 0 Then
   
   Set rtitem_bodyhitlist = doc.GetFirstItem("bodyHitlist")
   Set rtnav_table = rtitem_bodyhitlist.CreateNavigator()
   
   'Tabelle suchen
   
   If rtnav_table.FindFirstElement(RTELEM_TYPE_TABLE) Then
      Set rttable = rtnav_table.GetElement
      
      rows=rttable.RowCount
      columns=rttable.ColumnCount
      
      If rows > 1 Then
         'Array initialisieren
         Redim array_subject(rows - 2) As String
         Redim array_from(rows - 2) As String
         Redim array_sendto(rows - 2) As String
         Redim array_posteddate(rows - 2) As String
         Redim array_abstract(rows - 2) As String
         
         
         'Daten werden ab der 2. Zeile und ab der 3. Spalte ausgelsen
         If rtnav_table.FindFirstElement(RTELEM_TYPE_TABLECELL) Then
            For r=1 To rows
               For c=1 To columns
                  If c> 2 And r > 1 Then
                     Set rtrange = rtitem_bodyhitlist.CreateRange
                     Call rtrange.SetBegin(rtnav_table)
                     Call rtrange.SetEnd(rtnav_table)
                     
                     Inhalt = rtrange.TextParagraph()   
                     
                     Select Case c
                     Case 3:
                        array_subject(r-2) = Inhalt   
                     Case 4:
                        array_from(r-2) = Inhalt
                     Case 5:
                        array_sendto(r-2) = Inhalt
                     Case 6:
                        array_posteddate(r-2) = Inhalt
                     Case 7:
                        array_abstract(r-2) = Inhalt
                     End Select
                  End If
                  
                  Call rtnav_table.FindNextElement(RTELEM_TYPE_TABLECELL, 1)
               Next
            Next
         End If
      End If      
   End If

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Problem beim Auslesen einer Tabelle aus einem RichTextFeld
« Antwort #1 am: 19.01.10 - 14:02:36 »
Ein kurzer Blick in die Designer Hilfe hätte dir verraten wie es geht;-)

Hier das Beispiel aus der Designer Hilfe

Code
Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim dc As NotesDocumentCollection
  Dim doc As NotesDocument
  Dim body As NotesRichTextItem
  Dim rtnavBody As NotesRichTextNavigator
  Dim rtnavTable As NotesRichTextNavigator
  Dim rtnavCell As NotesRichTextNavigator
  Dim rtrangeTable As NotesRichTextRange
  Dim rtrangeCell As NotesRichTextRange
  Dim rtrangePara As NotesRichTextRange
  Dim counter As Integer
  Dim msg As String
  Dim rtnavFlag As Boolean
  Set db = session.CurrentDatabase
  Set dc = db.UnprocessedDocuments
  Set doc = dc.GetFirstDocument
  Set body = doc.GetFirstItem("Body")
  REM Get first table in Body item
  REM Set range and navigator for it
  Set rtnavBody = body.CreateNavigator
  If Not rtnavBody.FindFirstElement(RTELEM_TYPE_TABLE) Then
    Messagebox "Body item does not contain a table,",, _
    "Error"
    Exit Sub
  End If
  Set rtrangeTable = body.CreateRange
  Call rtrangeTable.SetBegin(rtnavBody)
  Call rtrangeTable.SetEnd(rtnavBody)
  Set rtnavTable = rtrangeTable.Navigator
  REM Get each cell in table
  REM Set range and navigator for it
  Set rtrangeCell = body.CreateRange
  Set rtrangePara = body.CreateRange
  Call rtnavTable.FindFirstElement(RTELEM_TYPE_TABLECELL)
  Do
    Call rtrangeCell.SetBegin(rtnavTable)
    Call rtrangeCell.SetEnd(rtnavTable)
    Set rtnavCell = rtrangeCell.Navigator
    msg = ""
    counter = counter + 1
    REM Get each paragraph in cell
    REM Set range and its paragraph text
    rtnavFlag = rtnavCell.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
    If rtnavFlag Then
      Do
        Call rtrangePara.SetBegin(rtnavCell)
        Call rtrangePara.SetEnd(rtnavCell)
        msg = msg & rtrangePara.TextParagraph & Chr(13)
      Loop While rtnavCell.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
    Else
      msg = "<No text paragraph in cell>"
    End If
    Messagebox msg,, "Cell " & counter
  Loop While rtnavTable.FindNextElement(RTELEM_TYPE_TABLECELL)
End Sub

Du musst also innerhalb der Zelle nocheinmal mit einem Navigator die einzelnen Textparagraphen auslesen und dann sollte es funktionieren.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Matthias78

  • Frischling
  • *
  • Beiträge: 4
Re: Problem beim Auslesen einer Tabelle aus einem RichTextFeld
« Antwort #2 am: 26.01.10 - 22:41:12 »
Hallo,

erstmal Danke für die Antwort.
Bin leider erst heute dazu gekommen die Antwort zu lesen.

Ich habe zwar auch in der Designerhilfe gesucht. (Ohne die wäre ich wahrscheinlich nicht mal bis zu diesem Punkt gekommen  ;) )

Jedoch habe ich mich, da ich bisher Navigatoren und Ranges noch nie benutzt habe, ordentlich verheddert.

Ich werde mir das Ganze bei nächster Gelegenheit nochmal genauer ansehen.
Dann hoffentlich mit etwas mehr Erfolg  :)

Gruß
Matthias



 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz