AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO GetTableNames mit Excel falsche Werte
Thema durchsuchen
Ansicht
Themen-Optionen

ADO GetTableNames mit Excel falsche Werte

Offene Frage von "Sausemann"
Ein Thema von Sausemann · begonnen am 12. Sep 2006 · letzter Beitrag vom 12. Sep 2006
Antwort Antwort
Sausemann

Registriert seit: 11. Aug 2006
14 Beiträge
 
#1

ADO GetTableNames mit Excel falsche Werte

  Alt 12. Sep 2006, 09:54
Datenbank: Excel • Zugriff über: ADO
Hallo,
hab leider mal wieder ein Problem.
Ich greife über ADO auf eine Exceldatei zu.

Delphi-Quellcode:
ADOcon.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0' +
                          ';Data Source='+ DBPATH +
                          ';Extended Properties=Excel 8.0'+
                          ';Persist Security Info=False';
ADOcon.Open;
if ADOcon.Connected then
 begin
  ADOcon.GetTableNames(selTablename.Items);
  ...
 end;
Connection funktioniert.
Jedoch erhalte ich nicht die richtigen Tabellennamen.
- Bei einem Arbeitsblattnamen mit Bindestrich (-) wird der Tabellenname in Anführungszeichen gesetzt.
- Bei allen Arbeitsblättern wird ein $ angefügt
- Bei einem Arbeitsblatt mit festgelegten Druckbereich wird '$Druckbereich' angefügt

Gebe ich bei GetTableNames etwas falsches an, oder gibt es eine andere Funktion die ich Aufrufen kann. Kann man bei GetTableNames die Auflistung des Druckbereichs ausschalten

Danke
Sausemann
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: ADO GetTableNames mit Excel falsche Werte

  Alt 12. Sep 2006, 10:08
Er gibt dir die Bereiche so wie er sie selbst versteht.
Ein select macht man dort nunmal von SheetXXX$ und bei einer named Range ist es nunmal andersrum: $Rangename.
GetTableNames ist für diejenigen gedacht, die sich SQL ohne wissen der Datenquelle zusammenbauen.

Das was du da machen willst ließe sich sicherlich auch über Automation von Excel selbst lösen. (Der Excel Jet provider braucht doch auch ein installiertes Excel, oder? )
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Sausemann

Registriert seit: 11. Aug 2006
14 Beiträge
 
#3

Re: ADO GetTableNames mit Excel falsche Werte

  Alt 12. Sep 2006, 10:42
Hi Elvis,

Zitat von Elvis:
Er gibt dir die Bereiche so wie er sie selbst versteht.
Ein select macht man dort nunmal von SheetXXX$ und bei einer named Range ist es nunmal andersrum: $Rangename.
Warum spuckt mir die Funktion dann bei einer Exceldatei mit nur einem Datenblatt einmal den Tabellennamen mit '$' und einmal den Dateinamen in der Liste aus?
Außerdem:
ADOtable.TableName := selTablename.Items[selTablename.ItemIndex]; mußte dann funktionieren ... jedoch Fehlanzeige (Syntexfehler in FROM-Klausel ... bei "Select * FROM Tabelle1$" ist das ja auch logisch, oder?)

Zitat von Elvis:
GetTableNames ist für diejenigen gedacht, die sich SQL ohne wissen der Datenquelle zusammenbauen.
wie jetzt? ...
Bezogen auf die "unbekannten" Tabellen, die ich Variabel einbinden möchte oder meine Unkenntnis???

Zitat von Elvis:
Das was du da machen willst ließe sich sicherlich auch über Automation von Excel selbst lösen. (Der Excel Jet provider braucht doch auch ein installiertes Excel, oder? )
Ich habe gelesen, daß keine Excel-Installation notwendig ist, wenn man über ADO zugreift ... oder bin ich da auf dem Holzweg
Jedenfalls möchte ich vermeiden, daß Excel installiert sein muß um auf eine .xls-Datei zuzugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ADO GetTableNames mit Excel falsche Werte

  Alt 12. Sep 2006, 11:43
Da du den Jet-Treiber verwendest, solltest du die Namen in eckige Klammern fassen. Dann funktioniert es eigentlich (so macht es MS ja auch).

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Sausemann

Registriert seit: 11. Aug 2006
14 Beiträge
 
#5

Re: ADO GetTableNames mit Excel falsche Werte

  Alt 12. Sep 2006, 13:56
Zitat von mikhal:
Da du den Jet-Treiber verwendest, solltest du die Namen in eckige Klammern fassen. Dann funktioniert es eigentlich (so macht es MS ja auch).

Grüße
Mikhal
Danke erstmal ... ist soweit klar und funktioniert auch ...
Ich füge die GetTableNames-Ergebnisse in eine Combobox (selTablename.Items) ... und da sieht es einfach *doof* aus, wenn ein $ dahinter ist oder es in Anführungszeichen aufgelistet wird.
Ich könnte die Liste auch durch ein Script anpassen ... ist das aber die einzigste Möglichkeit???
... und wie Filter ich z.B. den Eintrag mit dem Druckbereich? Nach '$Druckbereich' suchen bringt nichts, wenn eine andere Sprache in Windows eingestellt ist.

Danke Sausemann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 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