Best. Daten aus einer Tabelle in eine CSV Datei speichern

13. Dezember 2023 18:18

Hallo,

ich möchte bestimmte Daten aus einer Tabelle in eine CSV Datei speichern.
Möchte mir so eine Art Sicherung dieser Daten machen, bevor ich diese Daten ändere. Falls bei der Änderung was schief läuft möchte ich die Daten wiederherstellen.
Würde dies gerne so lösen, da die Wiederherstellung erst in einigen Tagen passieren kann bzw. ich dies für mehrere Tabellen so machten möchte.

Nun habe ich dafür folgenden Code erstellt:
Code:
Dateiname := 'C:\temp\' + "BDE Auftragsnr." + '.csv';
IF NOT File.CREATE(Dateiname) THEN
  IF NOT File.OPEN(Dateiname,TEXTENCODING::UTF8) THEN
    ERROR('Sicherungsdatei kann nicht erstellt werden!!!');
File.CREATEOUTSTREAM(StreamOut);
     
BDEArbeitsplatzgruppeposten.RESET;
BDEArbeitsplatzgruppeposten.SETRANGE("BDE Auftragsnr.","BDE Auftragsnr.");
BDEArbeitsplatzgruppepostenRef.GETTABLE(BDEArbeitsplatzgruppeposten);
IF BDEArbeitsplatzgruppepostenRef.FINDSET THEN BEGIN
  REPEAT
  StreamText := '';
  FOR i := 1 TO BDEArbeitsplatzgruppepostenRef.FIELDCOUNT DO BEGIN   
    Feldwert := FORMAT(BDEArbeitsplatzgruppepostenRef.FIELDINDEX(i).VALUE);   
    IF StreamText = '' THEN
      StreamText := Feldwert
    ELSE
      StreamText := StreamText + ';' + Feldwert;                   
  END;
  StreamOut.WRITETEXT(StreamText);
  StreamOut.WRITETEXT();
 
  UNTIL BDEArbeitsplatzgruppepostenRef.NEXT = 0
END; 
File.CLOSE();


Der funktioniert auch nur das Problem sind erstes mal die Umlaute und dann noch auch die Dezimalzahlen. Diese kommen mit Sonderzeiche, erkennt nicht Punkt und Komma.
Habt ihr eine Idee wie ich das lösen könnte.
Wie könnte ich den Datentype erkennen und dann den Wert richtig formatieren.

Danke und lg
stony

Re: Best. Daten aus einer Tabelle in eine CSV Datei speicher

14. Dezember 2023 11:27

Moin!

Du versuchst zuerst die Datei zu erstellen und falls das schief läuft, die Datei zu öffnen.
Beim Öffnen gibst du bereits das Encoding an, jedoch nicht bei dem Versuch, die Datei zu erstellen.

Sollte die Datei also erfolgreich erstellt werden können, ist sie nicht im UTF8-Format erstellt und wird somit auch nicht in UTF8 beschrieben.