Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle? (https://www.delphipraxis.net/128465-odbc-zugriff-auf-excel-tabelle-name-der-tabelle.html)

Frederika 30. Jan 2009 11:15

Datenbank: Excel ODBC • Version: ? • Zugriff über: ODBC ADO

ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Zitat:

Zitat von sx2008
Infos über den ConnectionString gibt es hier: http://www.connectionstrings.com

Erstmal vorab nochmals Danke für diesen exzellenten Link. Die ODBC-Verknüpfung zu Excel und Access haben beide soweit auf Anhieb geklappt. Erstaunlich! Man muß halt nur wissen wie.

Jetzt meine Frage:
Der Verbindungstest zu Excel per ODBC klappt zwar auf Anhieb, aber ich weiß nicht, wie ich dann auf die Daten per SQL zugreifen kann:

SQL-Code:
select * from ????
Was muss man für ??? einsetzen? Ich habe nur noch ein Tabellenblatt in Excel und das heißt TEST. Mit TEST als Tabellenname funktioniert es aber leider nicht.

Ich habe die Tabelle nach Access gewandelt, und da kann man dann

SQL-Code:
select * from Tabelle1
einsetzen und es funktioniert. Ich würde nur halt gerne Excel nehmen, weil ich zunächst meine Import-Datenmengen simulieren möchte und dazu beötige ich schon die Rechenfunktionen von Excel, damit es halbwegs sinnvolle und veränderliche Werte ergibt.

Frederika 30. Jan 2009 12:48

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
OK, hat sich inzwischen erledigt, ich bin selbst drauf gekommen. Man muß alle zur Tabelle gehörenden Zellen mit Einfügen/Namen einen Namen geben. Warum auch immer...

Gebhard 30. Jan 2009 20:22

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Hallo,

Du mußt nicht umbedingt einen Namen vergeben, sondern kannst auch die Namen aller Tabellen aus der Exceldatei abfragen und anschließend in einen SQL-Befehl einfügen. Einen Bespielcode kann ich im Moment leider nicht liefern, weil er im ca. 60 km entfernten Büro liegt. Bei Bedarf liefere ich ihn am Montag nach, ich brauche dann nur eine Info!

Hier aus der Erinnerung.
Die Befehle zum abfragen der Tabellennamen sind nicht im ActiveX "ADO", sondern im "ADO-Catalog" definiert. Gute Beispiele stehen in der Hilfe von MS Excel -> "ADOX". Im SQL-Befehl muß hinter dem Tabellen ein "$" stehen.
Falsch: SELECT * FROM Tabelle1
Richtig: SELECT * FROM Tabelle1$

Ich hoffe, daß ich helfen konnte.

Tschüss
Gebhard

Frederika 2. Feb 2009 18:19

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Zitat:

Zitat von Gebhard
Im SQL-Befehl muß hinter dem Tabellen ein "$" stehen.
Falsch: SELECT * FROM Tabelle1
Richtig: SELECT * FROM Tabelle1$

Hm, klang vielversprechend, funktioniert aber bei mir nicht: "Syntaxfehler in FROM-Klausel". Sobald das $-Zeichen drin ist, geht's nicht!

Union 3. Feb 2009 02:46

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Als Tabellenname muß der Name des Arbeitsblattes mit einem angehängten $ in eckigen Klammern angegeben werden. Dies ist standardmäßig Tabelle1..3 bei der Neuanlage einer Excel-Datei:
SQL-Code:
SELECT * FROM [Tabelle1$]

Frederika 3. Feb 2009 16:23

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
@Union: Super, das klappt bei mir! Die eckigen Klammern sind nötig.

Danke!

Gebhard 3. Feb 2009 19:57

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

Union hat zwar schon die Antwort geliefert, trotzdem möchte ich einen Beispielscript einstellen. Wie ich bereits am 28.01. geschrieben habe, wurde mein Lösungsvorschlag aus der Erinnerung geschrieben. Dabei habe ich leider die eckigen Klammern übersehen.
Im Anhang befinden sich die Projektdateien und eine Exceldatei. Die Exceldatei muß sich in meiner Demo im gleichen Verzeichnis wie die exe-Datei befinden. Sie enthält 3 Tabellen mit den Namen Tabelle 1 bis 3 und einen benannten Bereich mit dem Namen Nikolaus. Der Script zeigt zuerst die Namen der drei Tabellen und danach den Inhalt der Tabelle 1.

Versionsübersicht:
- Delphi 7.0
- Excel 2002, SP3
- Betriebssystem Windows XP

Es wäre schön, wenn Euch meine Demo hilft


Gruß

Gebhard

Frederika 3. Feb 2009 19:59

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Vielen Dank für Deine Mühe, Gebhard!

Union 4. Feb 2009 09:00

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
@Gebhard: Wieso verwendest Du Active-X wenn in Delphi die Funktionalität eingebaut ist? Es gibt doch TAdoConnection.GetTableNames und GetFieldNames, die liefern Dir ganz bequem die gewünschten Werte in einer Stringlist.

Gebhard 5. Feb 2009 09:55

Re: ODBC-Zugriff auf Excel-Tabelle / Name der Tabelle?
 
Hallo @Union,

ich benutze Active-X, weil ich diesen Programmteil vor einigen Monaten aus einem VBS-Schulungsheft übernommen und nach Delphi umgeschrieben habe. Ich muß (zu meiner Schande) eingestehen, daß ich nicht nach Delphi - Funktionalität gesucht habe, um diese Aufgabe anders zu erledigen.

Tschüss

Gebhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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