Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit CSV in ADO-Table (https://www.delphipraxis.net/158633-probleme-mit-csv-ado-table.html)

daredd 24. Feb 2011 15:16

Datenbank: CSV • Version: 1.0 • Zugriff über: ADOtable

Probleme mit CSV in ADO-Table
 
Hallo,

ich stecke fest. Nach 2 Std. suche im Web, habe ich es endlich hinbekommen, dass eine CSV-Datei via ADOTable(mit connectionString) im Grid angezeigt wird. Aber leider nicht ganz so wie ich es brauch.
Wenn ich in der Schema.ini, unter Format=CSVDelimited eingebe, wird nur die erste spalte mit den Artikelnummern korrekt angezeit, der Rest wahllos durcheinander mit (;)-Zeichen im Rest des Grids (adotable).

Wenn ich Fortmat=Delimited(;), dann sieht das schon viel besser aus. Nur in einer "Splate" der CSV-Datei sind Modelle (kompatibel zu) aufgelistet, und ausgerechnet mit einem (;) getrennt.

In Excel öffnet sich alles normal.

Hier ein paar facts:

Schema.ini:
[data.csv]
Format=CSVDelimited // oder Format=Delimited(;)
DecimalSymbol=.
ColNameHeader=True
MaxScanRows=0
Col1=ANUMMER Text
Col2=ARTIKEL Text
Col3=ARTIKELSTATUS Text
Col4=HERSTELLER Text
Col5=KLASSE Text
Col6=GRUPPE Text
Col7=HERSTELLERNUMMER Text
Col8=EAN Text
Col9=KOMPATIBEL_ZU Text
Col10=EK_EUR Text
Col11=VK_EUR Text
Col12=KURZTEXT Text
Col13=ARTIKELTEXT1 Text
Col14=ARTIKELTEXT2 Text
Col15=HINWEISTEXT Text
Col16=BILD_NAME Text
Col17=DATENBLATT_NAME Text
Col18=VERFUEGBARKEIT Text
Col19=INTERNET Text
Col20=ENDKUNDE Text
Col21=GEWICHT Text
Col22=URA Text
Col23=URA_PREIS Text
Col24=SPEDITIONSVERSAND Text
Col25=AENDERUNGSDATUM Text
CharacterSet=ANSI


hier ein bissel CSV:

ANUMMER;ARTIKEL;ARTIKELSTATUS;HERSTELLER;KLASSE;GR UPPE;HERSTELLERNUMMER;EAN;GERAETESERIE;KOMPATIBEL_ ZU;EK_EUR;VK_EUR;KURZTEXT;ARTIKELTEXT1;ARTIKELTEXT 2;HINWEISTEXT;BILD_NAME;DATENBLATT_NAME;VERFUEGBAR KEIT;INTERNET;ENDKUNDE;GEWICHT;URA;URA_PREIS;SPEDI TIONSVERSAND;AENDERUNGSDATUM
AN-AB-P084;Adapterkabel FME (f) / FAKRA II (m) Z-Null Cod.,RG 174;Normal;Antenne Bad Blankenburg;Antennen;Adapter / Sonstiges;2305.01;;;;6,7;10,5;;;;;an_ab_p046.jpg;D atenblatt_Adapterkabel.pdf;JA;JA;JA;14;NEIN;;NEIN; 16.07.2010 18:25
AN-BU-Z008;THB Little-Flat Antenne I für GSM 900/1800/CDMA;Normal;Bury Technologies;Antennen;Zubehör;0-23-00-0013-0;4,02303E+12;;;7,73;29,9;Kaum sichtbar von innen und außen passt sich diese Dualbandantenne dem Raum zwischen Scheibe und Dachkante an. Eine flexible Klebefläche sorgt für sicheren Halt an der Innenseite Ihrer Fahrzeugscheibe.;> Highlights<br>- 900/1800 MHz Dualbandfunktion, CE-konform <br>- Kompakte Abmessungen 120 x 22 x 6 mm <br> 2,5 Meter Kabel mit 50 Ohm-FME- Anschluss <br>> Grundeigenschaften<br>- Breite: 120.0 mm<br>- Höhe: 6.0 mm<br>- Tiefe: 20.0 mm<br>- Farbe: Schwarz;;;an_bu_z008.jpg;;JA;JA;JA;65;NEIN;;NEIN;2 2.12.2010 21:49
AN-DL-G010;


wie gesagt, es würde wunderbar mit Format=Delimited(;) gehen, aber diese verdammten (;) unter kompatibel_zu sind das handicap.

thx daredd

Sir Rufo 24. Feb 2011 15:23

AW: Probleme mit CSV in ADO-Table
 
Dann hält sich die CSV-Datei nicht an Bei Google suchenRFC 4180
Wieso erwartest du also, dass die korrekt eingelesen werden könnte?

Einfachstes Mittel: Dem Ersteller der CSV-Datei die RFC um die Ohren hauen :mrgreen:

p80286 24. Feb 2011 16:42

AW: Probleme mit CSV in ADO-Table
 
Ähh
diese CSV-Dateien sind dummerweise von den Ländereinstellungen abhängig.
Für deutsche Verhältnisse sieht das ganz ordentlich aus, darum kann Excel das ja auch. Und leider ist es ein gern gebrautes Argument, "wenn Excel damit umgehen kann, dann ist das auch in Ordnung"

Gruß
K-H

daredd 24. Feb 2011 17:02

AW: Probleme mit CSV in ADO-Table
 
Das hört sich ja alles grauenvoll an, trotzdem danke.
Kann man vielleicht via Delphi die CSV in eine Excel-Tabelle umwandel und dann weiter rumhantieren? Das wäre so noch das Einzige was ich mir vorstelen kann. Hab das vorher "manuell" so gemacht, dann die Tabelle in eine Access-Datenbank gepackt und nach bearbeitung mit meinem Programm wieder via Access>Excel>CSV oder direkt >CSV

Was meint ihr?

jobo 24. Feb 2011 17:51

AW: Probleme mit CSV in ADO-Table
 
Ich glaube nicht, dass Excel das "einfach so" kann, wie soll das funktionieren? Excel ist ja im Gegensatz zu einem Tableprovider zu nichts verpflichtet und wird ganz einfach irgendetwas halbgares tun (z.B. in der Zeile eine Spalte zufügen oder die Zeile ignorieren), was in einem drittel der Fälle einem (amerikanischen) Benutzer weiterhilft.

Du kannst natürlich mit dem Datenlieferanten sprechen, wie empfohlen.
Ansonsten, die Datei zunächst zu Fuß öffnen und ; zählen. Alle Zeilen mit unpassender Zahl rauswerfen und zurückschicken.
Feldbegrenzer würden hier auch helfen, dann müsste aber wieder der Lieferant ran...

daredd 24. Feb 2011 18:28

AW: Probleme mit CSV in ADO-Table
 
ja, ich werde mich am besten mit dem datenlieferanten in verbindung setzen. werde wohl nicht der einzige bleiben mit diesem problem. :thumb:

Sir Rufo 24. Feb 2011 19:40

AW: Probleme mit CSV in ADO-Table
 
Hmm, sehe ich das jetzt richtig, und du hast in deinem CSV-Beispiel keinen Satz drin, der diese Eigenart aufweist?

Sonst gib doch mal (als Dateianhang) einen kleinen Auszug der Datei hier zum Besten, wo dies so ist.

alzaimar 24. Feb 2011 20:11

AW: Probleme mit CSV in ADO-Table
 
Texte können in CSV in " eingschlossen sein, dann kann eine Spalte auch das Spaltentrennzeichen enthalten:
A;B;"C;D" sind drei Werte A,B und 'C;D'

Wenn die Datei so formatiert wäre, sollte es funktionieren. Und wenn Excel damit umgehen kann, dann kannst Du das auch.

Häng mal so eine Datei an oder versuche den TCSVReader hier im Forum, der ist mittlerweile von DP-Usern getestet und sollte korrekt laufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.

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