Domino 9 und frühere Versionen > ND9: Entwicklung
csv-Export - Zeilenumbruch am Ende verhindern
cebolina:
Hallo,
ich exportiere periodisch aus einer Notes-Ansicht Daten in eine csv-Datei mit diesem Code:
--- Code: ---...
Const tz = ";"
Dim strText As String
intFilenum = Freefile
Open strFilePath For Output As intFilenum
Set doc = view.GetFirstDocument()
Do While Not doc Is Nothing
...
strText = WertA & tz & WertB & tz & WertC
Print #intFilenum, strText
Set doc = view.GetNextDocument(doc)
Loop
Close #intFilenum
...
--- Ende Code ---
Die csv-Datei wird erfolgreich erstellt.
Wenn ich mir die exportierte Datei im txt-Editor anschaue, steht nach dem letzten Datensatz allderings ein Zeilenumbruch (siehe csv1.jpg).
Dieser Zeilenumbruch macht bei der Weiterverarbeitung der Datei (nicht Notes) Probleme.
Was muss ich im Code ändern, damit der letzte Zeilenumbruch nicht eingefügt wird? (siehe csv2.jpg)
Gruß
Stefan
Tode:
Auszug aus der Hilfe zu Print:
--- Zitat ---The Print statement adds a newline character to the end of exprList (to force a carriage return), unless exprList ends with a semicolon or a comma.
--- Ende Zitat ---
Also einfach "& tz" an die Zeile hängen, wenn es die letzte Zeile ist. Also so:
--- Code: ---Do While Not doc Is Nothing
Set docNext = view.GetNextDocument(doc)
strText = WertA & tz & WertB & tz & WertC
If docNext Is Nothing then
strText = strText & tz
End If
Print #intFilenum, strText
Set doc = docNext
Loop
--- Ende Code ---
Wenn das auch nicht geht (weil Dein Zielsystem mit dem zusätzlichen Trenzeichen nix anfangen kann), dann musst Du einen NotesStream statt der "klassischen" Print- Methode verwenden, und dort gibt es den WriteText- Befehl, dem man mitgeben kann, ob er ein EOL mitsendet oder nicht.
--- Code: ---Set stream = ses.CreateStream
Call stream.Open( strFilePath )
Do While Not doc Is Nothing
Set docNext = view.GetNextDocument(doc)
strText = WertA & tz & WertB & tz & WertC
If docNext Is Nothing then
Call stream.WriteText( strText, EOL_NONE )
Else
Call stream.WriteText( strText, EOL_PLATFORM )
End If
Set doc = docNext
Wend
--- Ende Code ---
cebolina:
Hallo Torsten,
habe das Script mit deinem 1. Vorschlag geändert.
Es gibt jetzt zwar immer noch einen Zeilenumbruch am Ende der csv-Datei, aber das Zielsystem zickt nicht mehr rum.
Danke und Gruß
Stefan
Peter Klett:
Ein
Print #intFilenum, strText ;
schreibt keinen Zeilenumbruch
cebolina:
@Peter Klett
habe ich auch probiert.
Ergebnis: Alle Datensätze stehen in nur einer Zeile.
Edit: So geht's:
--- Code: ---If docNext Is Nothing Then
Print #intFilenum, strText ;
Else
Print #intFilenum, strText
End If
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln