Um eine spezielle Auswertung vorzunehmen, ist es manchmal nötig diese in einem anderen Programm als der eigentlich dafür vorgesehenen Anwendung, wie z. B. in der Warenwirtschaft, zu erstellen. Wenn es keine vorgefertigte Auswertung für diesen speziellen Fall gibt, kann man sich, sofern man Kenntnis von der Datenbankstruktur hat, in Excel oder dergleichen selber etwas zu recht stricken.
Hierzu ist es erforderlich den Datenbankserver über ODBC anzusprechen. Für MS-SQL ist dies mit Windows-Bordmitteln einfach so möglich. Wenn eine andere Datenbank genutzt wird, ist es erforderlich einen ODBC-Treiber zu installieren. Zwar ist ODBC in der Regel langsamer als eine native Anbindung an den Datenbankserver, aber wenn man schnell etwas auswerten muss, braucht man sich so keine Gedanken über die Art der Anbindung machen. So lange man die Abfrage nicht alle 10 Sekunden benötigt und die Datenbank nicht allzu komplex und groß ist, sollte die Geschwindigkeit auch mehr oder weniger zu vernachlässigen sein. Bisher habe ich auch bei recht komplexen Abfragen über ODBC noch keinen Unterschied im Vergleich zur direkten Abfrage im MS-SQL-Management-Studio bemerkt.
Eine Ausnahme ist hier allerdings der Unix-ODBC-Treiber unter Linux. Immer wenn ich versucht habe mit diesem etwas zu realisieren, konnte man dies defintiv vergessen. Diesen sollte man definitiv nicht benutzen. Wenn man z. B. unter Linux mit PHP auf eine MS-SQL-Datenbank zugreifen muss, sollte man lieber eine Alternative wählen. ODBC kommt grundsätzlich oft zum Einsatz, wenn von der genutzten Plattform aus kein nativer Zugriff möglich ist.
In diesem Fall musste ich an eine Datenbank der Warenwirtschaft, die in „Progress OpenEdge“ vorliegt. Das Setup für den ODBC-Treiber findet man im Installationsordner von Progress auf dem Datenbankserver:
In dem Ordner der 32 Bit (_32) oder 64 Bit-Version (_64) findet man im Unterordner „install“ den Ordner „odbc“, wo sich das Setup „sql-odbc-setup.exe“ befindet:
Welche Bit-Version man benötigt, liegt nicht am Ziel-Betriebssystem, sondern an der Bit-Version der Software, die man für den Zugriff nutzt. Wenn man aus einem Excel/Office in 32 Bit auf die Datenbank zugreifen will benötigt man deshalb den 32 Bit-Treiber!
Wenn man das passende Setup gefunden hat, kann man dieses auf dem Client installieren:
Ich habe dann den lokalen Progress-Ordner auf dem Client für die Installation des Treibers angegeben. Laut der Hilfeseite von Progress soll man das Netzlaufwerk nehmen, da die Warenwirtschaft aber auf den Clients den Progress-Ordner angelegt haben, habe ich diesen genommen:
Probleme hat dies bei der Nutzung des ODBC-Treibers nicht verursacht.
Wenn man die 32 Bit-Version des Treibers installiert, kann man unter einem 64 Bit-Windows die Konfiguration der Datenquelle nicht über die „ODBC-Datenquellen-Verwaltung“ aus der Systemsteuerung verwalten. Stattdessen muss man das Verwaltungstool „odbcad32.exe“ aus dem Ordner „C:\Windows\SysWOW64“ starten:
Eine schöne Verwirrung, die Microsoft hier geschaffen hat. Denn selbst für die 64 Bit-ODBC-Treiber heißt das Verwaltungstool „odbcad32.exe“ und liegt im system32-Ordner. Alleine die Tatsache, dass der Ordner für die 64 Bit-Variante nicht system64 heißt, ist nicht einleuchtend, so dass man leicht vergessen kann welches odbcad32 nun für welche ODBC-Treiber zuständig ist. Hier muss man sich also immer merken, dass die Ordnerbezeichnung genau umgekehrt gilt:
system32 = 64 Bit-Anwendungen
SsWOW64 = 32 Bit-Anwendungen (WOW64 bedeutet „Windows-On-Windows 64-bit“)
In einem Hilfsartikel bei Progress wird dies auch beschrieben.
Wenn man mit den 32 und 64 Bit-Versionen hier etwas vermurkst und im DLC-Ordner nicht die passende DLL liegt, dann kann es zu einem solchen Fehler kommen:
Dies ist mir passiert, als ich beide Versionen installiert hatte und dabei leider den gleichen Installatinsordner verwendet habe.