AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Exeltabelle mit ADODataset - SQL String fehlerhaft
Thema durchsuchen
Ansicht
Themen-Optionen

Exeltabelle mit ADODataset - SQL String fehlerhaft

Ein Thema von AHolzknecht · begonnen am 14. Feb 2012 · letzter Beitrag vom 15. Feb 2012
Antwort Antwort
AHolzknecht

Registriert seit: 28. Apr 2006
Ort: Lünen
3 Beiträge
 
Delphi 2007 Enterprise
 
#1

Exeltabelle mit ADODataset - SQL String fehlerhaft

  Alt 14. Feb 2012, 13:12
Datenbank: Exel • Version: 2007 • Zugriff über: ODBC
Hallo Delphi-Praxis Community,

ich hätte eine Frage zu der ich leider nichts gefunden habe. Ich habe ganz nach Anleitung eine Verbindung über ODBC zu einer ExelDatei hergestellt. Die Anleitung habe ich aus der Tiefe der Hilfedateien geholt. Dabei wird eine ADOConnection über einen Connection String letztlich mit der Exel-Tabelle verbunden.

1)
Wie man in dem hier ausgelesenen Quelltext sieht, kann die Verbindung zu der Exel Datei wirklich hergestellt werden. Connected ist "True"! Verbindungstest gelingt ebenfalls.

________________________________________
object ADOConnection1: TADOConnection
Connected = True
ConnectionString =
'Provider=MSDASQL.1;Persist Security Info=False;User ID=Praxis;Da' +
'ta Source=DelphiADO;Mode=ReadWrite;Initial Catalog=C:\Dokumente und Einstellungen\Praxis\Eigene Dateien\Eigene Datenquellen\Exeldatei.xls'
Mode = cmReadWrite
Left = 96
Top = 64
end
________________________________________

2) Im nächsten Schritt wird ein ADODataset eingerichtet und mit ADOConnection verknüpft.
Danach kann ich im "VerbindungsTextEditor" in einem Fenster links oben Benennungen für verschiedene vordefinierte Bereiche aus der ExelTabelle, die ich einmal unter "Exel/Ansichten" definiert hatte sehen. Die sehen etwa so aus.

'Abrechnung 2009$'
'Abrechnung 2009$'Z_E06FF92C_B76F_47CF_B83D_9C3753ED7D4A_#wvu# Fi
'Abrechnung 2009$'Print_Area

Auch die tatsächlich in meiner Exel-Tabelle vorhandenen Spaltenüberschriften im Tabellenblatt "Tabelle1" - F1, F2, F5, F6 kann man sehen. Das ist doch der Beleg dafür, dass ich die Tabelle korrekt eingestellt habe. Bei der SQL Abfrage bekomme ich aber nur noch Fehlermeldungen.

Der VerbindungsTextEditor ist so konstruiert, dass man durch Eingaben oder Klick auf die vorgenannten Zeilen in den Memofeldern lins in einem Textfeld einen SQL Befehl zusammenstellen kann, der etwa folgendermassen aussieht:

"Select F1, F2 from Abrechnung 2009$"
Dieser Befehl führt zu folgender Fehlermeldung
"[Microsoft][ODBC-Treiberfür Excel] Syntaxfehler In Abfrage. Die Abfrage ist unvollständig"

Die Variante "select Index, RE_Datum from Rechnungen$Print_Area"
führt zu folgender Fehlermeldung
[Microsoft][ODBC-Treiberfür Excel] Syntaxfehler in FROM-Klausel

Ich würde erwarten, dass ich auch ein Tabellenblatt insgesamt einstellen kann. Was mache ich falsch?

(Bin am Nachmittag wieder on)

Mit Dank vorab für eine Antwort und
vielen Grüßen,

Alfred
Alfred Holzknecht
Es gibt keine dummen Fragen, nur dumme Antworten.

Geändert von AHolzknecht (15. Feb 2012 um 10:13 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
AHolzknecht

Registriert seit: 28. Apr 2006
Ort: Lünen
3 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Exeltabelle mit ADODataset - SQL String fehlerhaft

  Alt 14. Feb 2012, 13:13
P.S. Sorry, ich wollte die Quelltextzeilen farbig hervorheben. Jetzt finden sich in dem Text Tags, die nicht zum Quelltext gehören "COLOR blue" etc.
Alfred Holzknecht
Es gibt keine dummen Fragen, nur dumme Antworten.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Exeltabelle mit ADODataset - SQL String fehlerhaft

  Alt 14. Feb 2012, 13:18
Ich würde schon mal vorschlagen, eckige Klammern um Tabellen und Feldnamen zu machen, besonders gut geeignet bei SPace, Umlauten usw.

Dann für den Anfang lieber ein "Select *" und schauen, wie ADO die Felder nennt.

Dann hab ich noch dunkel in Erinnerung, dass die angezeigten Sheetnamen von der internen VBA Benennung abweichen (nicht nur durch das $), normalerweise ist das 1:1, aber wenn man mit Kopieren und Umbenennen von Sheets anfängt, dann eben nicht mehr...
Gruß, Jo
  Mit Zitat antworten Zitat
AHolzknecht

Registriert seit: 28. Apr 2006
Ort: Lünen
3 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Exeltabelle mit ADODataset - SQL String fehlerhaft

  Alt 15. Feb 2012, 10:03
Heureka!

Hallo Jo,

vielen vielen Dank für Deine Empfehlung. Mit den von Dir vorgeschlagenen eckigen Klammern kann ich die Verbindung zur Exel-Tabelle herstellen.

Folgender String funktioniert: "Select F3 from [Abrechnung 2009$]".

Ich werde noch präzisere Angaben machen für den Fall, dass es noch jemanden gibt, der sich dafür interessiert. Hier kann ich bis jetzt nur einen definierten Bereich ".....$" darstellen. Ob man ein ganzes Tabellenblatt auch wählen kann, weiss ich nicht nicht. In einem Tutorial wurde gesagt, dass die Bereiche keine Leerzeilen haben dürfen und Spalten nur einen Datentyp, keine Vermischung. Ich könnte damit schon leben. Die hier vorliegende Tabelle hält sich an all diese Regelungen nicht.

Nochmals Dank und Gruß,

Alfred
Alfred Holzknecht
Es gibt keine dummen Fragen, nur dumme Antworten.

Geändert von AHolzknecht (15. Feb 2012 um 10:05 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Exeltabelle mit ADODataset - SQL String fehlerhaft

  Alt 15. Feb 2012, 10:40
Heureka!
..
Ich werde noch präzisere Angaben machen für den Fall, dass es noch jemanden gibt, der sich dafür interessiert.
..
In einem Tutorial wurde gesagt, dass die Bereiche keine Leerzeilen haben dürfen und Spalten nur einen Datentyp, keine Vermischung.
..
Ich könnte damit schon leben.
..
Mach es doch einfach, die Leser freuen sich.

"nur ein Datentyp usw."
Dir ist hoffentlich klar, dass Du Dich auf dünnem Eis bewegst. Excel ist keine Datenbank. Die Möglichkeit, es per SQL abzufragen ist u.U. praktisch, aber die beschriebenen Voraussetzungen gibt es nicht, weil MS zu faul war, das zu implementieren.
In Excel kannst Du den letzten Sch.. reinquetschen, und wenn man es nicht explizit selbst machst, macht Excel es dank der wundervollen Automatik und rät munter vor sich hin.
Was soll ein typbasierendes Objekt wie ein Dataset mit solchen Daten anfangen?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Exeltabelle mit ADODataset - SQL String fehlerhaft

  Alt 15. Feb 2012, 10:56
Wie wäre es wenn Du versuchst über OLE an Excel zu kommen?
Dann hast Du die Treiberhampelei mit ODBC nicht.
Und wie Jobo schon erwähnte, Excel ist nun mal keine Datenbank.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 14:50 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