<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Excel ODBC Treiber findet Tabelle nicht]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich weis, es ist etwas umständlich, aber es soll so sein.<br />
Ich möchte über ODBC auf eine Excel Tabelle zugreifen und habe mir auch die netsprechende Datenquelle erstellt. Funzt auch alles soweit bis auf das Open() vom Recordset:</p>
<pre><code class="language-cpp">keys.Open(CRecordset::snapshot,&quot;Select * from NameTabele Where Name = 'Heinz'&quot;);
</code></pre>
<p>Das schlägt fehl, weil er &quot;NameTable&quot; nicht kennt, obwohl die Tabelle im Excel genau so heißt. Ich hba dann mal in den Standard SQL String geschaut im erstelletn CRecordset, da stand drin</p>
<pre><code class="language-cpp">return _T(&quot;[Tabelle1$]&quot;);
</code></pre>
<p>Wenn ich jetzt in mein SQL Statement reinschreibe:</p>
<pre><code class="language-cpp">keys.Open(CRecordset::snapshot,&quot;Select * from Tabelle1$ Where Name = 'Heinz'&quot;);
</code></pre>
<p>Dann bekomme ich den Fehler: &quot;Fehler in der FROM Klausel!&quot;</p>
<p>Kann mir jemand helfen??</p>
<p>Gruß und Dank Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150024/excel-odbc-treiber-findet-tabelle-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 07:15:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150024.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Jun 2006 13:31:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Excel ODBC Treiber findet Tabelle nicht on Mon, 12 Jun 2006 13:31:01 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich weis, es ist etwas umständlich, aber es soll so sein.<br />
Ich möchte über ODBC auf eine Excel Tabelle zugreifen und habe mir auch die netsprechende Datenquelle erstellt. Funzt auch alles soweit bis auf das Open() vom Recordset:</p>
<pre><code class="language-cpp">keys.Open(CRecordset::snapshot,&quot;Select * from NameTabele Where Name = 'Heinz'&quot;);
</code></pre>
<p>Das schlägt fehl, weil er &quot;NameTable&quot; nicht kennt, obwohl die Tabelle im Excel genau so heißt. Ich hba dann mal in den Standard SQL String geschaut im erstelletn CRecordset, da stand drin</p>
<pre><code class="language-cpp">return _T(&quot;[Tabelle1$]&quot;);
</code></pre>
<p>Wenn ich jetzt in mein SQL Statement reinschreibe:</p>
<pre><code class="language-cpp">keys.Open(CRecordset::snapshot,&quot;Select * from Tabelle1$ Where Name = 'Heinz'&quot;);
</code></pre>
<p>Dann bekomme ich den Fehler: &quot;Fehler in der FROM Klausel!&quot;</p>
<p>Kann mir jemand helfen??</p>
<p>Gruß und Dank Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076239</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Mon, 12 Jun 2006 13:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Excel ODBC Treiber findet Tabelle nicht on Mon, 12 Jun 2006 13:38:46 GMT]]></title><description><![CDATA[<p>versuch mal</p>
<pre><code>keys.Open(CRecordset::snapshot,&quot;Select * from [Tabelle1$] Where Name = 'Heinz'&quot;);
</code></pre>
<p>und hier noch ein paar Hinweise:</p>
<p>Excel:</p>
<p>1.Generelles:<br />
-Am einfachsten connected man mit Hilfe des „Excel-Dateien“-Treibers, eine<br />
eigene DSN zu erstellen macht wenig Sinn, da es sich dabei sowieso um einen<br />
ganz normalen Excel-Treiber handelt. Außerdem erspart man sich dadurch die<br />
lästigen „Extended Properties“, die so nicht gesetzt werden müssen. „READONLY“<br />
muss so auch nicht explizit auf FALSE gesetzt werden. Der eigentliche<br />
ConnectionString bleibt kurz und übersichtlich und leistet dabei dasselbe wie<br />
eine eigene DSN.</p>
<p>-Tabellennamen werden grundsätzlich in eckige Klammern gepackt. Dabei muss der<br />
Tabellenname immer mit einem „“-Zeichen abgeschlossen werden. Das gilt für  
alle SQL-Befehle, nicht nur für „Select“ ! Beispiel : \[MyTable]. Die MSDN<br />
behauptet, man könne auch ohne eckige Klammern auf „Ranges“ zugreifen. Das mag<br />
für VB gelten, bei Delphi hatte ich bis jetzt noch keinen Erfolg. Bleibe aber<br />
weiter dran...</p>
<p>-Excel-Tabellen können grundsätzlich nur einmal geöffnet werden. Das sollte<br />
beim Debuggen berücksichtigt werden. Eine Connection, die auf TRUE steht, kann<br />
stören. Meines wissens nach ist es auch nicht möglich, besagte Tabelle ein<br />
zweites mal im Exclusiv-Modus zu öffnen.</p>
<p>2. Einen Connect ausführen<br />
-Ein typischer ConnectionString sieht in etwa so aus:</p>
<p>-ConnectionString := ’Provider=MSDASQL;Data Source=Excel-Dateien;Initial<br />
Catalog=C:\myTable.XLS;’</p>
<p>-Mehr ist nicht nötig, man glaubt es kaum...</p>
<p>3. CREATE DATABASE<br />
-Ein CREATE DATABASE ist nicht so ohne weiteres anwendbar. Man muss einen<br />
kleinen Trick anwenden. Man connected auf eine Datei, die bis jetzt noch nicht<br />
existiert. Dann führt man einen CREATE TABLE aus. Der Treiber erzeugt dann<br />
automatisch die .XLS-Datei. Die DataBase (sprich das XLS-File) heißt dann so,<br />
wie zuvor angegeben.</p>
<p>4. CREATE TABLE<br />
-Hier gilt es zu berücksichtigen, dass außer dem Tabellennamen auch die<br />
Feldnamen in eckigen Klammern stehen müssen! Excel kennt eine Vielzahl von<br />
Formaten, darunter VARCHAR, DOUBLE, CURRENCY oder DATETIME. Einen Typ &quot;int&quot;<br />
gibt es nicht! Zahlen werden generell als &quot;Double&quot; angegeben. Ein typischer<br />
CREATE TABLE könnte so aussehen:</p>
<p>-CREATE TABLE [myTable$] ([Name] varchar(50), [Vorname] varchar(50), [PLZ]<br />
Double, [GeburtsDatum] DateTime)</p>
<p>-Die Feldnamen erscheinen im Worksheet dann in der ersten Zeile. Die msdn<br />
behauptet, man könne mit &quot;FirstRowHasNames&quot; die erste Zeile zu einem weiteren<br />
Datensatz machen, ich hatte bisher keinen Erfolg damit.</p>
<p>5. Zugriff &amp; Manipulation<br />
-Zugegriffen und manipuliert wird auf ganz normale Art und Weise. Bei<br />
einem &quot;Insert&quot; können jetzt auch die eckigen Klammern weggelassen werden. Beispiel:</p>
<p>-INSERT INTO (Name, Vorname, PLZ, GeburtsDatum) values (’Müller’, ’Martin’, 74523, 22.02.02)</p>
<p>-ansonsten funktioniert alles im SQL-typischen Stil.</p>
<p>6. Abschließendes<br />
-als sehr kooperativ erweist sich Excel mit Datums- und Currency-Werten. Wenn<br />
man die Felder bereits richtig definiert, kann man auch mit Sicherheit davon<br />
ausgehen, dass alle Zellen richtig formatiert und angezeigt werden. Hier<br />
leistet der Treiber ausgezeichnete Arbeit.</p>
<p>-Leider ist es IMHO nicht möglich, den Feldtyp VarChar(x) richtig zu<br />
beeinflussen. Excel macht sich nichts aus der Größe x, es legt sich<br />
anscheinend soviel Speicherplatz an chars zurecht, wie es (Excel) meint, zu<br />
benötigen. Wenn man die Daten dann im Excel anschaut, ist das kein Problem;<br />
wird allerdings versucht, die Daten mit einem Grid anzuzeigen, gibt das Probleme, weil die Felder überdurchschnittlich groß geraten sind.</p>
<p>-stets beachten sollte man auch, dass Excel nicht in der Lage ist, mehr als<br />
65535 Datensätze zu speichern. Das ist aber ein Problem der Excel-Philosophie.</p>
<p>7. <strong>Wichtiges</strong><br />
-Ein SELECT * FROM kann nicht ausgeführt werden. Woher sollte Excel auch<br />
wissen, wann das Ende der Feldnamen erreicht ist? Und wenn, was würde es dann mit leeren Einträgen machen, die im Excel ja durchaus zulässig sind?</p>
<p>for allem der letzte dürfte hilfreich sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076242</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Mon, 12 Jun 2006 13:38:46 GMT</pubDate></item><item><title><![CDATA[Reply to Excel ODBC Treiber findet Tabelle nicht on Mon, 12 Jun 2006 13:50:09 GMT]]></title><description><![CDATA[<p>Danke, das genügt, ich mach es mit Access, da weis ich dass es geht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Danke, Ranger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076252</guid><dc:creator><![CDATA[Glasgow_Ranger]]></dc:creator><pubDate>Mon, 12 Jun 2006 13:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to Excel ODBC Treiber findet Tabelle nicht on Mon, 12 Jun 2006 21:38:39 GMT]]></title><description><![CDATA[<p><a href="http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel12.htm" rel="nofollow">http://www.henkessoft.de/C++/MFC/mfc_einsteigerbuch_kapitel12.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076591</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Mon, 12 Jun 2006 21:38:39 GMT</pubDate></item><item><title><![CDATA[Reply to Excel ODBC Treiber findet Tabelle nicht on Tue, 13 Jun 2006 17:30:07 GMT]]></title><description><![CDATA[<p><div class="plugin-markdown"><input type="checkbox" id="checkbox42827" /><label for="checkbox42827">stehen. Es funzt hier komischerweise sogar, wenn der Tabellenname nicht in [] steht.</label></div></p>
<p>Ach ja und evtl auch wichtig: total sinnloser weise unterstützt Excel kein DELETE FROM (steht auch so in der MSDN)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077056</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 13 Jun 2006 17:30:07 GMT</pubDate></item></channel></rss>