Domino 9 und frühere Versionen > ND9: Entwicklung

Neue Zeile in Textfile einfügen mit LotusScript

(1/3) > >>

Tode:
Irgendwie habe ich gerade ein Brett vor dem Kopf.
Folgendes Szenario: ich exportiere 150.000 Dokumente in ein CSV- File. Da ich erst während des Exports erfahre, welche Felder in den Dokumenten vorhanden sind, kann ich die "Header"- Zeile mit den Feldnamen erst als allerletztes schreiben.

Aktuell habe ich es so, dass ich alle Werte in einer Liste sammle, und dann am Ende erst schreibe.
Das hat aber den Nachteil, dass ich keinerlei Fortschritt im file sehe, bis die gesamte Liste erstellt habe.

Nun wollte ich das umstellen, dass jede Zeile sofort geschrieben wird, aber ich bin irgendwie blind und finde keine (einfache) Möglichkeit, ganz am Ende den Cursor in die erste Zeile des Files zu setzen, und den Titel hinzuzufügen...

Natürlich kann ich einfach ein neues File erzeugen, und Zeile für Zeile rüberkopieren, aber das kann doch irgendwie nicht Sinn der Sache sein...
Kann mir jemand über den blinden Fleck weghelfen?

Peter Klett:
Wenn Du nur den Fortschritt sehen willst, Printe jedes 1000. oder 10.000. Dokument einen Status, das stört das System nicht (im Gegensatz zu 150.000 Prints).

Ansonsten könntest Du (zumindest unter Windows) zwei Datei schreiben, eine mit dem Titel, die zweite mit den Daten und dann auf BS-Ebene mit type daten.csv > header.csv (sinngemäß so, die genaue Syntax müsste ich in meinem historischen DOS 5.0 Buch nachsehen ;) ). Da gibt es auch eine Option, dass die Daten angehängt werden

Andrew Harder:
Vielleicht hilft Dir 'Seek' weiter:
https://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/LSAZ_SEEK_STATEMENT.html?lang=de

Mit: Seek #intFileNum, 1
Wird der Zeiger wieder auf die erste Position gesetzt und anschließend ab da fleißig überschrieben.

[EDIT]
Du musst als erste Zeile dann einen Platzhalter für die Headerzeile schreiben. Da Du die Länge vorher nicht kennst, kann das etwas tricky sein.

Tode:
@Peter: Das mit dem Fortschritt printen habe ich schon... Der Export dauert aber -je nach Typ der Dokumente- sehr lange... Und wenn man dann in einem anderen Programm was schaut, dann baut Windows das "blockierte" Fenster nicht mehr auf -> Keine Statuszeile mehr sichtbar

Das mit dem concat auf OS- Ebene habe ich mir auch schon überlegt, vermutlich würde ich da am besten zurecht kommen.

@Andrew: Genau den Weg habe ich gerade probiert (hatte nach verfassen des Posts auch nochmal die Hilfe durchstöbert). Das Problem ist -wie Du schreibst- Dass ich VORHER wissen muss, wie lange die Zeile wird, denn Put schreibt nur, wenn die korrekte Länge vorher bekannt ist, und Write schreibt zwar an die richtige Stelle, überschreibt aber so viele Bytes wie es braucht, und wenn der Bytecount über mehrere Zeilen geht, dann fehlen halt Teile des Inhalts...

Schnubbel:
Hi,

wie wäre es mit einem Excel-Export?  Anschließend  speicherst du die Tabelle aus Excel in einer CSV ab.

Bei Excel hättest du ja den Vorteil, dass du beim Export einfach die erste Zeile frei lässt und dann am Ende füllst.

Lieben Gruß

Thorsten

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln