Seite 1 von 1

[gelöst] unerwünschte Zeilen/Absatzumbrüche

Verfasst: Fr, 23.06.2006 16:27
von chrdz
Hallo,

Mit folgendem Code schreibe ich Text aus einer MySql Datenbank in ein Writer Dokument (eigentlich in eine sehr einfache Texttabelle).

Code: Alles auswählen

Statement = Connection.createStatement()
ResultSet1 = Statement.executeQuery("SELECT indexs, beschreibung_"+s+" FROM indexs, texte where indexs.indexid = texte.indexid and texte.texteid = '"+textid+"'")
oMyDoc = StarDesktop.CurrentComponent

If Not IsNull(ResultSet1) Then
While ResultSet1.next
Cursor = oMyDoc.Text.createTextCursor()
Cursor.gotoEnd(false)
Table = oMyDoc.createInstance("com.sun.star.text.TextTable")
Table.Initialize(2,1)
oMyDoc.Text.insertTextContent(Cursor, Table, False)
Cell = Table.getCellByPosition(0,0)
Cell.String = ResultSet1.getString(1)+" "+ResultSet1.getString(2)
Wend
End If
ResultSet = Statement.executeQuery("SELECT text_"+s+" FROM texte where texteid = '"+textid+"'")
If Not IsNull(ResultSet) Then
While ResultSet.next
Cell = Table.getCellByPosition(0,1)
Cell.String = ResultSet.getString(1)
Cursor.gotoEnd(false)
oMyDoc.Text.insertControlCharacter(Cursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
Wend
End If
Der Text innerhalb der Datensätze ist teilweise umgebrochen. Leider bekomme ich im resultierenden Writer Dokument für jeden Umbruch einen Absatzumbruch und einen Zeilenumbruch.
Kann mir jemand helfen?

Grüsse

Christian

gelöst

Verfasst: Do, 29.06.2006 07:55
von chrdz
mit einem workaround den ich in der Starbasic Doku gefunden habe geht es jetzt.

Code: Alles auswählen

Dim Source As String
Dim Search As String
Dim NewPart As String
Dim Result As String
Dim StartPos As Long
Dim CurrentPos As Long
Source = CStr(ResultSet.getString(1))
Search = chr(10)
NewPart = "" 
Result = ""
StartPos = 1
CurrentPos = 1
Do While CurrentPos <> 0
CurrentPos = InStr(StartPos, Source, Search)
If CurrentPos <> 0 Then
Result = Result + Mid(Source, StartPos, _
CurrentPos - StartPos)
Result = Result + NewPart
StartPos = CurrentPos + Len(Search)
Else
Result = Result + Mid(Source, StartPos, Len(Source))
End If ' Position <> 0
Loop
Sollte allerdings irgend jemand eine Idee haben, weshalb der String zusätzlich zum Zeilenumbruch (chr(13)) auch noch ein chr(10) liefert, wäre ich für die Info dankbar. Wenn ich nämlich 'ResultSet.getString(1)' in einer msgBox ausgebe sieht der Text richtig aus.

Grüße
Christian

Verfasst: Di, 04.07.2006 08:45
von chrdz
Hallo,
nach wieterem Stöbern habe ich wohl endlich eine Erklärung für das Phänomen gefunden. Unter Windows werden Zeilenumbrüche mit LF und CR realisiert. Daher die doppelten Steuerzeichen. Unter Linux sollte das nicht vorkommen.