Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO, Excel, falsches Format (https://www.delphipraxis.net/58878-ado-excel-falsches-format.html)

TPeterT 14. Dez 2005 06:56

Datenbank: Excel • Version: XP • Zugriff über: ADO

ADO, Excel, falsches Format
 
Hallo!

Versuche mittels ADO auf eine Excel-Datei zuzugreifen.
Habe bereits in mehreren Beiträgen gelesen, dass dies auch funktionieren soll.
Allerdings erhalte ich immer die Fehlermeldung:
"Exception der Klasse EOleException: Die externe Tabelle hat nicht das erwartete Format..."

Mein Code (Datei ist der Pfad + Dateiname des Excelfiles):
Delphi-Quellcode:
      ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
             'Provider=Microsoft.Jet.OLEDB.4.0; ' +
             'Data Source=' + Datei + ';' +
             'Extended Properties=Excel 8.0; ' +
             'Persist Security Info=False';

      ADOConnection.Open;
An der Datei wird es warscheinlich nicht liegen, da ich mehrere verschiedene versucht habe.

Woran könnte das liegen?

Danke und liebe Grüsse
Peter

Jens Schumann 14. Dez 2005 07:09

Re: ADO, Excel, falsches Format
 
Hallo,
da der ConnectionString korrekt aussieht würde evt. helfen, wenn Du uns das SELECT-Statement zeigen würdest.

TPeterT 14. Dez 2005 07:13

Re: ADO, Excel, falsches Format
 
Hallo Jens!
Danke für die schnelle Antwort!

Jetzt bin ich allerdings etwas überfordert: SQL-Statement vor dem Öffnen der Connection?
Den Fehler erhalte ich nämlich schon beim "ADOConnection.Open;"

Die Daten aus Excel möchte ich jedenfalls in ein cxMemData lesen.
Wo gehört das SQL-Statement hin? Wie sollte das lauten?

Danke und liebe Grüsse
Peter

Jens Schumann 14. Dez 2005 07:25

Re: ADO, Excel, falsches Format
 
Zitat:

Zitat von TPeterT
Jetzt bin ich allerdings etwas überfordert: SQL-Statement vor dem Öffnen der Connection?
Den Fehler erhalte ich nämlich schon beim "ADOConnection.Open;"

Puh - das hätte ich jetzt nicht erwartet. Hast Du Excel auf dem Rechner installiert?
Hast Du Access auf dem Rechner? Das frage ich, weil mit Access die auf jeden Fall die Jet-Engine
mit installiert wird. Wenn nicht, musst Du evt die Jet-Engine installieren.

Zitat:

Zitat von TPeterT
Die Daten aus Excel möchte ich jedenfalls in ein cxMemData lesen.
Wo gehört das SQL-Statement hin? Wie sollte das lauten?

Ein SELECT Statement für eine Exceltabellen könnte wie folgt aussehen
SQL-Code:
SELECT * FROM tablle1$
Hier wird aus einer Excelarbeitsmappe das Tabellenblatt Tabelle1 abgefragt.
Achtung: Das $ Zeichen ist in Excel nicht Bestandteil des Tabellenblattnamens muss aber für die SQL-Abfrage an den Tabellenblattnamen angehängt werden.

TPeterT 14. Dez 2005 07:39

Re: ADO, Excel, falsches Format
 
Hallo Jens!
Ja - Excel und Access ist installiert, die Jet-Engine dadurch eigentlich auch...
Eine Verbindung zu einer Access-Datei mittels ADO ist ohne Probleme möglich.

Hmm.. Das Select-Statement benötige ich ja trotzdem erst, wenn ich mal die Verbindung aufgebaut habe. Zum Aufbauen der Verbindung ist es ja noch nicht nötig (oder sehe ich das falsch?)!

Wenn ich bei der ADO-Connection versuche "manuell" den ConnectionString anzulegen - Microsoft Jet 4.0 OLE DB Provider wähle und bei Verbindung dann "..." wähle gibt er mir als mögliche Dateiendungen ausschliesslich *.mdb vor - dh ich muss "alle Dateien anzeigen, um auch excel auswählen zu können - bei Verbindung testen kommt dann natürlich wieder die oa Fehlermeldung (Nicht erkennbares Dateiformat...)... kann hier irgendwo der Fehler liegen?

Danke und liebe Grüsse
Peter

Jens Schumann 14. Dez 2005 07:44

Re: ADO, Excel, falsches Format
 
Hallo,
da jetzt ratlos bin zeige ich Dir den Connectionstring den ich für Excel verwende.
Code:
sExcelConnectionString ='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"';
%S wird mit Format durch den Dateinamen der Exceldatei ersetzt.

Du hast in Deinem Connectionstring 2* Provider=Microsoft.Jet.OLEDB.4.0 stehen. Evt ist das ja ein Problem.

TPeterT 14. Dez 2005 07:49

Re: ADO, Excel, falsches Format
 
Hallo!

neee.. leider das selbe Problem!
na dann such ich mal weiter ;-)

Danke und liebe Grüsse
Peter

shmia 14. Dez 2005 10:23

Re: ADO, Excel, falsches Format
 
Du kannst nicht einfach irgendeine Excel-Datei nehmen und erwarten, dass sich die Daten mit ADO auslesen lassen.
Du musst dir zuerst eine Testdatei herstellen: neue Excel-Datei mit 3 Spalten und 10 Zeilen; die beiden unbenützten Worksheets löschen.

TPeterT 14. Dez 2005 10:36

Re: ADO, Excel, falsches Format
 
ich kann die excelfiles nicht manuell bearbeiten vor dem import in "delphi".. die excelfiles werden automatisch generiert...
weiss jetzt aber auch nicht genau was das mit dem problem zu tun hat, dass ich keine connection herstellen kann..
wie meinst du das?
liebe grüsse
peter

shmia 14. Dez 2005 10:53

Re: ADO, Excel, falsches Format
 
Zitat:

Zitat von TPeterT
ich kann die excelfiles nicht manuell bearbeiten vor dem import in "delphi".. die excelfiles werden automatisch generiert...
weiss jetzt aber auch nicht genau was das mit dem problem zu tun hat, dass ich keine connection herstellen kann..
wie meinst du das?

Wie gehst du vor, wenn du ein Problem hast ??
Doch wohl hoffentlich so wie Mr. Spock von der Enterprise: logisch und Schritt für Schritt.
Symtom: Du kannst eine bestimmte Excel-Datei "X" nicht mit ADO öffnen.

Mr. Spock würde nun mit Excel eine Testdatei erstellen und prüfen, ob er mit ADO draufkommt.
Falls ja: die Excel-Datei "X" ist defekt oder nicht kompatibel
Falls nein: ADO oder die Treiber sind defekt oder Mr. Spock hat einen Fehler im Connectionstring

Wenn Mr. Spock wüsste, das die Excel-Datei nicht direkt von der Excel-Anwendung erzeugt werden, sondern "automatisch generiert" werden, was würde er dann messerscharf schliesen ??


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 Uhr.
Seite 1 von 2  1 2      

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