Hallo,<br><br>
ich habe beim Zugriff auf Textdateien per ADO folgendes Phänomen erlebt:<br><br>
Reproduzierbar wird ein Feld in einer Textdatei (CSV-Format) nach dem 255. Zeichen abgeschnitten, in einer anderen Textdatei nicht.
Es handelt sich um denselben Datensatz. Die beiden Dateien unterscheiden sich nur in der Reihenfolge: Der fragliche Datensatz taucht in der funktionierenden Datei früher auf!<br><br>
Offenbar legt ADO den Feldtyp bei Textdateien nach Analyse der ersten paar Datensätze fest. Einmal für Text255 statt Memo entschieden, kann sich hieran auch dann nichts mehr ändern, wenn später ein längeres Feld folgt.<br><br>
Bei Access kann man ein ähnliches Verhalten erkennen: Der Textimport-Assistent schlägt 255er Felder vor, wenn der Datensatz "zu spät" auftaucht. Bei "früh genug" schlägt er gleich Memo vor.
Aber hier kann ich immerhin den vorgeschlagenen Datentyp ändern vor dem eigentlichen Import.<br><br>
Daher meine Frage: Kann man irgendwie der Zugriffskomponente beibringen, bei einem konkreten Feld Memo zu nehmen?<br><br>
Hier der Code:
<code>myADODataset:=TADODataset.create(nil);
myADODataset.ConnectionString:='Provider=Microsoft .Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+ Dateipfad +';Extended Properties=Text';
myADODataset.commandtext:='SELECT * FROM '+Dateiname;
myADODataset.open;
ZeigmirdenFeldinhalt:=vartostr(myADODataset[zickigesFeld]);</code><br><br>
Danke für jeden Denkanstoss,<br><br>
Alex
ich habe beim Zugriff auf Textdateien per ADO folgendes Phänomen erlebt:<br><br>
Reproduzierbar wird ein Feld in einer Textdatei (CSV-Format) nach dem 255. Zeichen abgeschnitten, in einer anderen Textdatei nicht.
Es handelt sich um denselben Datensatz. Die beiden Dateien unterscheiden sich nur in der Reihenfolge: Der fragliche Datensatz taucht in der funktionierenden Datei früher auf!<br><br>
Offenbar legt ADO den Feldtyp bei Textdateien nach Analyse der ersten paar Datensätze fest. Einmal für Text255 statt Memo entschieden, kann sich hieran auch dann nichts mehr ändern, wenn später ein längeres Feld folgt.<br><br>
Bei Access kann man ein ähnliches Verhalten erkennen: Der Textimport-Assistent schlägt 255er Felder vor, wenn der Datensatz "zu spät" auftaucht. Bei "früh genug" schlägt er gleich Memo vor.
Aber hier kann ich immerhin den vorgeschlagenen Datentyp ändern vor dem eigentlichen Import.<br><br>
Daher meine Frage: Kann man irgendwie der Zugriffskomponente beibringen, bei einem konkreten Feld Memo zu nehmen?<br><br>
Hier der Code:
<code>myADODataset:=TADODataset.create(nil);
myADODataset.ConnectionString:='Provider=Microsoft .Jet.OLEDB.4.0;Persist Security Info=False;Data Source='+ Dateipfad +';Extended Properties=Text';
myADODataset.commandtext:='SELECT * FROM '+Dateiname;
myADODataset.open;
ZeigmirdenFeldinhalt:=vartostr(myADODataset[zickigesFeld]);</code><br><br>
Danke für jeden Denkanstoss,<br><br>
Alex
Comment