![]() |
Exceltabelle über ADO und FieldType festlegen
Hallo,
ich habe das Problem, dass ich mehrere Exceldateien in eine Interbase(Firebird RC 1.5) einlesen muss. Das öffnen mit ADO ist kein Problem. Die Werte in Interbase zu spielen auch nicht. So könnte z.B. der ConnectionString aussehen:
Code:
und so das SQL-Statement
sExcelConnectionString ='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Exceldatei.xls;Extended Properties=Excel 8.0;Persist Security Info=False';
SQL-Code:
Das Problem ist, dass wenn ich über ADO ein Excelarbeitsblatt als Datenbank öffne bestimmt ADO den FieldType. Ich vermute mal das geschieht über den ersten Datensatz. Wenn die Tabelle aber wie folgt auf gebaut ist, kommt das Problem:
SELECT * FROM [Tabelle1$]
Code:
Wenn ADO den FieldType über den ersten Datensatz bestimmt wird Spalte B zum Type Double(ADO nimmt wirklich Double anstatt Integer). Wenn jetzt der zweite Datensatz gelesen wird kommt es bei Spalte B zum einem Fehler. Es steht ja ein Text im zweiten Datensatz in Spalte B.
A B C
EX1 1234 Ein Text VBN A400 Noch ein Text Jetzt die Frage: Wie kann ich die Fieldtypen bestimmen. Dann würde ich von vornherein sagen dass Spalte B einen String enthält. |
Re: Exceltabelle über ADO und FieldType festlegen
Zitat:
Kategorie Text wählen. Notfalls lässt sich dies auch über OLE-Automatisierung erledigen. Der Connectionstring für Excel hat übrigens 2 interessante Eigenschaften: "HDR=Yes;" indicates that the first row contains columnnames, not data "IMEX=1;" tells the driver to always read "intermixed" data columns as text Beispiel:
Code:
IMEX=1 wäre also für deinen Fall das Richtige.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\xfiles.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"
Richtig formatierte Excelspalten sind aber zu bevorzugen. |
Re: Exceltabelle über ADO und FieldType festlegen
Hallo shmia,
GENIAL vielen Dank |
Re: Exceltabelle über ADO und FieldType festlegen
Hallo,
was bedeutet "Installierbares ISAM nicht gefunden"? Das kommt wenn ich bei ADOConnection die Connection auf "True" setze. Besten Dank im voraus. |
Re: Exceltabelle über ADO und FieldType festlegen
Zitat:
|
Re: Exceltabelle über ADO und FieldType festlegen
Delphi-Quellcode:
Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programmieren\EDI4\excel\tabelle.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1
|
Re: Exceltabelle über ADO und FieldType festlegen
Habe die Lösung gefunden, liegt an Windows. Eine dll mußte neu registriert werden.
|
Re: Exceltabelle über ADO und FieldType festlegen
Leider doch nicht und zwar, wenn ich diesen Connectionstring nehme:
Delphi-Quellcode:
funktioniert es, aber wenn ich diesen verwende:
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Exceldatei.xls;Extended Properties=Excel 8.0;Persist Security Info=False'
Delphi-Quellcode:
nicht. Da der Tipp von shmia nicht schlecht ist und auch bei mir eintritt, benötige ich leider die zweite Möglichkeit.
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Exceldatei.xls;Extended Properties="Excel 8.0;Persist Security Info=False;IMEX=1'
Delphi-Quellcode:
nur dann kommt der fehler mit "ISAM". Kann mir eine eventuell eine andere Möglichkeit nennen?
IMEX=1
Gruß |
Re: Exceltabelle über ADO und FieldType festlegen
Zitat:
![]() Du solltest auch mal speziell Ausschau nach dem aktuellsten Servicepack für die Jet-Engine halten. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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 by Thomas Breitkreuz