Hallo Ng's
ich bin am "schreiben"
ich habe hier im Forum einen tollen beitrag gefunden der mich ein ganzes Stueck weiter gebracht hat.
Jetzt ist es so, das ich meine Tabelle im System drinne habe. ich habe eine Paradox Tabelle als Grundlage.
diese Tabelle hat auch ganz klar Spalten Überschriften.
Diese Spaltenüberschrieften müssen nun auch in meine CSV Datei, in den Header geschrieben werden.
ich hab im Moment sowas von den Kopf verloren. so das ich mal den gesamten Code Poste
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167:
| procedure TForm1.Button2Click(Sender: TObject); var f : Textfile; Ziel : String; Datensatz : String; NexteZeile : Boolean; begin if SaveDialog1.Execute then begin(SaveDialog1.FileName);
begin
Ziel := SaveDialog1.FileName; Ziel:=Ziel; try AssignFile(f, Ziel); Rewrite(f); Reset(f); finally CloseFile(f); end; with Query1 do begin Close; SQL.Clear; SQL.Add('select * from para_1'); Open; end; if Query1.RecordCount>0 then begin Query1.First; try NexteZeile:=FALSE; repeat Datensatz:=Query1.FieldByName('Artikel-Nr').asString + ';' + Query1.FieldByName('Warengruppe').asString + ';' + Query1.FieldByName('Beschreibung').asString + ';' + Query1.FieldByName('LPreis').asString + ';' + Query1.FieldByName('LieferantenNummer').asString + ';' + Query1.FieldByName('Hersteller').asString + ';' + Query1.FieldByName('Marke-Typ').asString + ';' + Query1.FieldByName('Geaendert').asString + ';' + Query1.FieldByName('AenderDatum').asString + ';' + Query1.FieldByName('Lagerbuchung').asString + ';' + Query1.FieldByName('Masse').asString + ';' + Query1.FieldByName('GarantieDIT').asString + ';' + Query1.FieldByName('GarantieLF').asString + ';' + Query1.FieldByName('Einheit').asString + ';' + Query1.FieldByName('Serien-Nr').asString + ';' + Query1.FieldByName('Serien-Nr-Regel').asString + ';' + Query1.FieldByName('Referenz-Nr').asString + ';' + Query1.FieldByName('Rabatt').asString + ';' + Query1.FieldByName('Prioritaet').asString;
if not NexteZeile then begin AssignFile(f, Ziel); Rewrite(f); Writeln(f,'Artikel-Nr;'+ 'Warengruppe;'+ 'Beschreibung;'+ 'LPreis;'+ 'LieferantenNummer;'+ 'Marke-Typ;'+ 'Geaendert;'+ 'AenderDatum;'+ 'Lagerbuchung;'+ 'Masse;'+ 'GarantieDIT;'+ 'GarantieLF.;'+ 'Einheit;'+ 'Serien-Nr;'+ 'Serien-Nr-Regel;'+ 'Referenz-Nr;'+ 'Rabatt;'+ 'Prioritaet;'); Reset(f); Append(f); end; NexteZeile:=TRUE; Writeln(f, Datensatz); Query1.Next; until Query1.Eof; finally CloseFile(f); end; end; end; Query1.Close; end;
end; type TStringDynArray = array of string; function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin
SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen);
Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := StrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end;
procedure TForm1.Button1Click(Sender: TObject); var s: string; exparr: TStringDynArray; x: integer; begin
begin OpenDialog1.Execute(); Memo1.lines.LoadFromFile(OpenDialog1.filename);
s := memo1.text; exparr := explode(';', s); for x:=0 to High(exparr) do ShowMessage('String = '+s+#13+#10+'Index = '+inttostr(x)+#13+#10+#13+#10+exparr[x]); end;
end; end. |
im ersten Abschnitt kann ich die Gesamte Tabelle reinschreiben. aber es muss ja so sein, das nach der Header Zeile einmal ein Carrige Retun Line Feed kommt.
ebenso nach jeder geschrieben Zeile.
wie und wo muss ich da mal ansetzten?!
Also Problem,
CR LF nach jeder geschrieben Zeile, wie bekomm ich das hin?
-->sehe gerde, das ghet auch wunder bar!!! OK
wenn jetzt in meiner Paradox Tabelle x Datensaätze drinne sind, ich aber zuerste nur den Haeder für die CSV geschrieben habe möchte und das mir das Programm die ganzen Tabelle in die CSV Datei schreibt, wie wäre da mal mein Ansatz!
Wo ich schon mal dabei bin
diese Spalten aus der Paradox Tabelle (also die überschriften) kann ich mir die auch senkrecht in einem String Grind anzeigen lassen??
in diesem String Grind soll später eine gegenüberstellung zu einer anderen Tabell erfolgen!
warum ist der weg nach rom so lang?!
gruss
lars
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.