AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi CSV Textdatei in Memtable laden und mit Query abfragen
Thema durchsuchen
Ansicht
Themen-Optionen

CSV Textdatei in Memtable laden und mit Query abfragen

Ein Thema von fisipjm · begonnen am 20. Okt 2022 · letzter Beitrag vom 25. Okt 2022
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.664 Beiträge
 
Delphi 12 Athens
 
#1

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 20. Okt 2022, 14:12
Hast du poClearDest oder poClearDestNoUndo in den BatchMove Options aktiv?

Eventuell musst du die Zieltabelle auch vorher löschen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
337 Beiträge
 
Delphi 12 Athens
 
#2

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 24. Okt 2022, 10:23
Hi Uwe,

danke für den Hinweis, dass hat zum Teil schon geholfen. Kannst du mir einen kleinen Gefallen tun
Ich habe in den Anhang eine Zip gepackt mit einem kleinen Programm das mein derzeitiges Problem verdeutlicht. In der Zip sind auch 2 CSV Dateien mit drin. Ich verstehen nicht waum der Import nicht funktioniert. Die GuessFormat Funktion gibt einfach keine Feldbezeichnungen zurück und ich verstehe nicht warum.
Ich befürchte langsam seh ich vor lauter Wald keine Bäume mehr.

grüß
PJM
Angehängte Dateien
Dateityp: zip CSV Loader.zip (92,2 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.664 Beiträge
 
Delphi 12 Athens
 
#3

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 24. Okt 2022, 11:44
Damit GuessFormat die erste Zeile als Feldnamen interpretiert, müssen diese entweder groß geschrieben werden oder es müssen bei den Feldwerten auch nicht-String Werte gefunden werden.

Im Allgemeinen sollte man auf GuessFormat lieber verzichten, da das Ergebnis nicht wirklich stabil ist. Wenn man das Format kennt, trägt man es besser im Reader.DataDef korrekt ein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
337 Beiträge
 
Delphi 12 Athens
 
#4

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 24. Okt 2022, 15:14
Damit GuessFormat die erste Zeile als Feldnamen interpretiert, müssen diese entweder groß geschrieben werden oder es müssen bei den Feldwerten auch nicht-String Werte gefunden werden.

Im Allgemeinen sollte man auf GuessFormat lieber verzichten, da das Ergebnis nicht wirklich stabil ist. Wenn man das Format kennt, trägt man es besser im Reader.DataDef korrekt ein.
Woher hast du die Informationen für GuessFormat? Ich finde in der Hilfe von Emba leider nur sehr spärliche Informationen. Mein Ziel ist es ja eigentlich auch nur mir ein bisschen Arbeit zu sparen. Ich mache mit GuessFormat die Datadefs in dem Reader voll und dann passe ich alles an, was nicht passt (Datum,Bool, etc.), der Rest, der ordentlich erkannt wird, kann ja weiter über GuessFormat laufen. Oder siehst du das anders.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.664 Beiträge
 
Delphi 12 Athens
 
#5

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 24. Okt 2022, 15:38
Woher hast du die Informationen für GuessFormat?
Die Sourcen natürlich.
Delphi-Quellcode:
      // When a value is upper-cased, this is a "good" sign, that
      // the value is field name
      if not CheckSet(sItem, ['A'..'Z', '_'], ['A'..'Z', '0'..'9', '_', '#', '$']) then
        lFieldNamesUC := False;

...

    // Final guess about first line
    DataDef.WithFieldNames := lFieldNames and (not lAllStrings or lFieldNamesUC);
Ich mache mit GuessFormat die Datadefs in dem Reader voll und dann passe ich alles an, was nicht passt (Datum,Bool, etc.), der Rest, der ordentlich erkannt wird, kann ja weiter über GuessFormat laufen. Oder siehst du das anders.
Das kannst du natürlich machen. In dem Fall solltest du den Reader bzw. Writer aber lieber nicht anonym anlegen, da du dann eben nicht so einfach an die entsprechenden Properties kommst.
Delphi-Quellcode:
       with TFDBatchMoveTextReader.Create(lBatchmove) do

...

        with TFDBatchMoveDataSetWriter.Create(lBatchmove) do
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
337 Beiträge
 
Delphi 12 Athens
 
#6

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 24. Okt 2022, 15:44
[QUOTE=Uwe Raabe;1513741]
Woher hast du die Informationen für GuessFormat?
Die Sourcen natürlich.
Delphi-Quellcode:
      // When a value is upper-cased, this is a "good" sign, that
      // the value is field name
      if not CheckSet(sItem, ['A'..'Z', '_'], ['A'..'Z', '0'..'9', '_', '#', '$']) then
        lFieldNamesUC := False;

...

    // Final guess about first line
    DataDef.WithFieldNames := lFieldNames and (not lAllStrings or lFieldNamesUC);
wie kommst du an die Source. Bei mir ist nach dem interface ( IFDBatchMoveReader = interface(IFDBatchMoveDriver) ) Schluss.
Ich befürchte ich stell mich grad richtig doof dran
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.664 Beiträge
 
Delphi 12 Athens
 
#7

AW: CSV Textdatei in Memtable laden und mit Query abfragen

  Alt 24. Okt 2022, 16:13
wie kommst du an die Source.
Strg-Klick auf TFDBatchMoveTextReader -> GuessFormat .

Übrigens: Du setzt dort nach dem Create zwar die DataDef-Eigenschaften, die werden aber bei GuessFormat wieder überschrieben. Du solltest also das GuessFormat nach dem Setzen von FileName aber vor den Einstellungen von DataDef aufrufen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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