31. Mai 2010 17:38
Hallo,
hoffe, meinem Dataport kann geholfen werden.
Ich exportiere Daten aus einer Tabelle. Nun möchte ich aber, dass nach dem dritten Feld eine neue Zeile angelegt wird, in die nächste Zeile kommen dann die restlichen Felder.
Der Dataport wird nicht zum Import verwendet.
Eine Lösung konnte auch sein, die Text-Datei manuell zu erstellen aus dem Dataport oder einem Report heraus oder so. Dafür müsste ich jedoch wissen, wie ich die einzelnen Felder mit einem TAB trennen könnte.....
Wer kann helfen?
LG
Zuletzt geändert von giebner am 1. Juni 2010 12:05, insgesamt 1-mal geändert.
1. Juni 2010 00:05
Ich würde die Datei per Code schreiben.
TAB ist der ASCII-Wert 9.
1. Juni 2010 08:27
Wie kann mir das ungefähr weiterhelfen?
1. Juni 2010 08:33
Öhm ... helfen die Stichworte FILE und OUTSTREAM?
1. Juni 2010 08:40
McClane hat geschrieben:Öhm ... helfen die Stichworte FILE und OUTSTREAM?
Wofür immer OUTSTREAM?
File-Variable mit WRITEMODE, TEXTMODE, CREATE, WRITE, CLOSE reichen doch völlig aus?
Hier ein einfaches Beispiel mit einer Variale NewFile vom Typ File:
- Code:
NewFile.WRITEMODE(TRUE);
NewFile.TEXTMODE(TRUE);
NewFile.CREATE('C:\Temp\Test.txt');
NewFile.WRITE('Hier fülle ich die erste Zeile');
NewFile.WRITE('Hier fülle ich die zweite Zeile (Zeilenumbruch automatisch enthalten');
NewFile.WRITE(''); // <-- Leerzeile! (wenn gewünscht)
NewFile.CLOSE;
Diese Art Quelltext kannst du z.B. prima in einen Report packen und so einen Dataport händisch kreieren - nur um die Trennzeichen musst du dich selber kümmern, z.B:
- Code:
NewFile.WIRTE(FORMAT(Feld1) + ';' + FORMAT(Feld2) + ';');
FORMAT immer dann nehmen, wenn die Variable/das Feld nicht vom Typ Text oder Code ist.
Statt ';' kannst du auch TAB benutzen, wie McClane es dir gesagt hat.
1. Juni 2010 09:00
Natalie hat geschrieben:Wofür immer OUTSTREAM?
Weil ICH den gerne benutze
Man sollte die Zeilen vor dem Export noch in Ansi übersetzen. Timo hat hier eine CU Text Management zur Verfügung gestellt, in der sicher so eine Funktion drin ist.
1. Juni 2010 10:08
Erst mal vielen Dank für die vielen Antworten, aber leider ist meinem Export noch nicht ganz geholfen - das liegt aber an mir, offensichtlich.
FILE kenne ich, aber OUTSTREAM leider nicht.
Muss ich OUTSTREAM verwenden, um einen TAB da mit einbauen zu können, oder geht das irgendwie auch mit den "normalen" FILE-Befehlen?
Falls es nicht geht, würde mir jemand ein kleines Beispiel für OUTSTREAM machen? Das wäre sehr, sehr freundlich!
1. Juni 2010 10:10
Das Beispiel von Natalie sollte auch mit TABs problemlos klappen. Outstream hatte ich wirklich nur deshalb vorgeschlagen, weil ich den immer benutze. Und da der Mensch ein Gewohnheitstier ist ..
1. Juni 2010 10:20
giebner hat geschrieben:Falls es nicht geht, würde mir jemand ein kleines Beispiel für OUTSTREAM machen? Das wäre sehr, sehr freundlich!
Im Übrigen habe ich noch nie mit OUTSTREAM gearbeitet und würde mich über ein Beispiel ebenfalls freuen!
1. Juni 2010 11:08
Natalie hat geschrieben:Im Übrigen habe ich noch nie mit OUTSTREAM gearbeitet und würde mich über ein Beispiel ebenfalls freuen!
Aber erst drüber meckern
Na gut. Irgendwie so:
- Code:
CharTAB:=9;
strTAB:=format(CharTAB);
NewFile.Create('c:\Temp\Test.txt'); // Create überschreibt ein bestehendes File ohne Nachfrage - wusste ich bis eben noch nicht
NewFile.CreateOutStream(OutStr);
OutStr.WriteText(Ascii2Ansi('Das'+strTAB+'ist'+strTab+'TAB-getrennt'));
NewFile.Close;
Müsste gehen ..
1. Juni 2010 11:09
Super, werde es gleich ausprobieren!
1. Juni 2010 12:04
Perfekt! Funktioniert!
Danke sehr!
1. Juni 2010 13:10
Zur Vervollständigung:
Mit den ASCII-Werten 13 (CR = Carriage Return) und 10 (LF = LineFeed) lässt sich dann auch ein Zeilensprung auf die gleiche Weise wie für den TAB durchführen.
2. Juni 2010 00:08
Eine neue Zeile hätte man mit einem weiteren WriteText aber einfacher haben können, würde ich sagen
2. Juni 2010 19:43
Das hatte ich ausprobiert, aber er hat das einfach hinten rangehängt.....
2. Juni 2010 20:28
Tatsächlich? Grmpf ... hab ich irgendwie anders in Erinnerung. Hilft ein "WriteText();"?
Edit: Wenn's so ist, kann man sich das mit dem Outstream wirklich sparen und besser so machen, wie es Natalie vorgeschlagen hat.
3. Juni 2010 08:57
Wenn ich den Befehl benutze, wie Du ihn geschrieben hast, wird mir ein Fehler ausgeworfen und wenn ich stattdessen "WRITETEXT('');" verwende, funktioniert es nicht.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.