Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Paradox-Dateien mit BatchMove nach TXT oder CSV übertragen (https://www.delphipraxis.net/10928-paradox-dateien-mit-batchmove-nach-txt-oder-csv-uebertragen.html)

eddy 28. Okt 2003 09:17


Paradox-Dateien mit BatchMove nach TXT oder CSV übertragen
 
Hallo Leute,

immer wieder gibt es einen Hinweis auf BatchMove im Zusammenhang mit Daten-Transfers. Leider gibt es nur wenige nachvollziehbare Beispiele.

Ich möchte also meine vorhandene funktionsfähige Fassung des Exports meiner DB-Daten (paradox-daten als csv speichern von Specialwork übernommen) in eine von Excel einlesbare CSV-Datei mit Hilfe von BatchMove realisieren.

Den Hinweisen MrSpock's folgend habe ich mir alle Ergebnisse von "Suche nach BatchMove" angesehen und damit angefangen:

Code:
procedure TFBrowser.ExportAlsExcelCSVDatei1Click(Sender: TObject);
var
  i : byte;
begin
  //Tab1 ist eine geöffnete *.DB-Datei und wird in einem DBGrid angezeigt
  if not Tab1.Active then begin
    ShowMessage('Welche Datei?');
    exit;
  end;
  Tab2.DatabaseName := Tab1.DatabaseName;
  Tab2.TableName := ChangeFileExt(Tab1.TableName, '.TXT'); //CSV auch probiert
  Tab2.TableType := ttASCII;
  // Tab2 muss noch nicht existieren
  BatchMove1.Source := Tab1;
  BatchMove1.Destination := Tab2;
  BatchMove1.Mode := batCopy;
  BatchMove1.Execute;
end;
Das Ergebnis ist nicht befriedigend. Umlaute werden nicht korrekt gewandelt. Bei Ausgabe auf CSV stehen alle DB-Felder hintereinander durch Leerzeichen entsprechnd der Feldgröße getrennt in Spalte A. Bei Ausgabe auf TXT muß ich noch mühsehlig in Excel die korrekte Trennung der Spalten eingeben.

Diese Aussage der online-Hilfe:
"ttASCII Die Tabelle ist eine Comma-Delimited-Textdatei mit Strings in Anführungszeichen für jedes Feld."
kann ich bisher nicht bestätigen. Ich habe weder Kommata als Trennzeichen noch Anführungsstriche in der erzeugten *.TXT-Datei gefunden.

Kann jemand bei der Lösung der Probleme helfen?

mfg
eddy

MrSpock 28. Okt 2003 10:27

Re: Paradox-Dateien mit BatchMove nach TXT oder CSV übertrag
 
Hallo eddy,

das Stichwort dazu heißt Schemafile. Zu einer ASCII Datei (wie CSV) kannst oder in deinem Fall musst du ein Schemafile erstellen (mit der Endung .SCH), in dem du den Trenner usw. festlegst:

Z.B.:

[CUSTOMER] // File name with no extension.
FILETYPE = VARYING // Format: VARYING or FIXED
CHARSET = ascii // Language driver name.
DELIMITER = " // Delimiter for char fields.
SEPARATOR = , // Separator character
...

eddy 28. Okt 2003 13:13

Re: Paradox-Dateien mit BatchMove nach TXT oder CSV übertrag
 
Hallo MrSpock,

ich hab' mal unter dem Begriff "Schemafile" herumgesucht. Für mich sieht das nicht einfacher aus, wenn ich für jede Datei, die ich exportieren will, vorher eine *.SCH-Datei erzeugen muß.

Und selbst wenn mir das gelingen sollte, wie stelle ich die Verbindung zwischen meiner 2CSV.SCH - Datei und dem Export einer beliebigen *.DB über BatchMove her?

mfg
eddy

r_kerber 28. Okt 2003 13:31

Re: Paradox-Dateien mit BatchMove nach TXT oder CSV übertrag
 
Zitat:

Zitat von eddy
Und selbst wenn mir das gelingen sollte, wie stelle ich die Verbindung zwischen meiner 2CSV.SCH - Datei und dem Export einer beliebigen *.DB über BatchMove her?

Ich glaube über die Namensgleichheit: tabelle.csv und tabelle.sch

eddy 28. Okt 2003 13:57

Re: Paradox-Dateien mit BatchMove nach TXT oder CSV übertrag
 
Hallo r_kerber,

wenn ich das richtig interpretiere, bedeutet dies, daß ich für jede von DB nach CSV zu transferierende Datenbank eine eigene *.SCH-File erzeugen muß, in der die entsprechenden Parameter und Felder angegeben werden.

Das sieht für mich aber nicht besonders einfacher aus, als die Variante von Specialwork, in seiner unit QueryExport hinterlegt, die einmal eingebunden bisher gut funktioniert hat:
paradox-daten als csv speichern


Habe diese SCH-File, die offensichtlich mit dem oben angegebenen Programmtext automatisch angelegt wurde gefunden. Die Bedeutung der letzten beiden Zahlenwerte ist mir bisher verborgen geblieben.

PARAM.SCH
[PARAM]
Filetype=Fixed
CharSet=ascii
Field1=ID,Long Integer,11,00,00
Field2=Block,Long Integer,11,00,11
Field3=Kurz,Char,60,00,22
Field4=Wert,Char,128,00,82
Field5=Typ,Char,01,00,210
Field6=Lang,Char,254,00,211

Nach folgender Änderung:
[PARAM]
Filetype=VARYING
CharSet=ascii
Delimiter = "
Separator = ;
Field1=ID,Long Integer,11,00,00
Field2=Block,Long Integer,11,00,11
Field3=Kurz,Char,60,00,22
Field4=Wert,Char,128,00,82
Field5=Typ,Char,01,00,210
Field6=Lang,Char,254,00,211

wurden meine Änderungen wieder durch die automatisch erzeugte Variante ersetzt.

Gibt es eine Anweisung BatchMove.<Benutze meine Param.SCH-Datei> ?

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz