Kann man ein Programm schreiben, welches

…einem die ODBC Treiber automatisch einrichtet??
Aber guten Tag erst einmal an alle. Wir müssen ein Telefonbuch in MFC programmieren. Das klappt mit den ODBC Treiber schon ganz gut, das heisst wir können schon Date lesen und auch wieder schreiben. Das ist auch nicht weiter schwer zugegeben.
Aber als kleines Schmankerl wollen wir gerne ein zusatzprogramm schreiben, welches dem „Kontrolleur“ des Programms in der Schule gleich noch mit die ODBC Verbindung unter Windows einrichtet.
Nun die Frage geht so etwas überhaupt, und kennt sich jemand damit aus???

Vielleicht kann sich mal jemand melden??

Danke

…einem die ODBC Treiber automatisch einrichtet??

Man kann sicherlich…

Nun die Frage geht so etwas überhaupt,

Bestimmt, denn das macht das ODBC-konfigurationsprogramm auch…

und kennt sich jemand
damit aus???

Hmmm… nicht wirklich. Ich kann Dir ein paar kleine Denkanstöße geben, da ich früher häufig in den INI-Dateien herumgepfuscht habe, weil das ODBC-Programm seine Macken hatte. Das war aber Windows 3.1…

Im wesentlichen beschränkt sich die ODBC-Konfiguration darauf,
Einträge in INI-Dateien zu aktualisieren.
Das ist vor allem die ODBC.INI.
Wenn Du sie Dir mal anschaust, wirst Du schnell erkennen,
wie sie aufgebaut ist: Zuerst die Data Sources aufgelistet, z.B.
[ODBC 32 bit Data Sources]
R522=Oracle ODBC Driver (32 Bit)

Dann die Datenquelle als Abschnitt:
[R522]
Driver32=D:\orant\BIN\SQORA32.DLL

Dann gibt es die ODBCINST.INI, wo die Treiberbeschreibungen sind:
[ODBC 32 bit Drivers]
Microsoft Access-Treiber (*.mdb) (32 Bit)=Installed
Oracle ODBC Driver (32 bit)=Installed

[Oracle ODBC Driver (32 bit)]
Driver=D:\orant\BIN\SQORA32.DLL
Setup=D:\orant\BIN\SQORAS32.DLL
32Bit=1
Einige Treiber legen zusätzliche treiberspezifische Infos ab, wie z.B.
in der ORAODBC.INI:
[Oracle ODBC Driver Common]
Driver Logging=0
RemoveControlChars=NO
LockTimeOut=0
Proxy Access=0

Wenn Du davon ausgehen kannst, daß ODBC an sich eingerichtet ist,
ist die Anpassung der Datenquellen simpel. Wenn nicht, mußt Du dann noch DLLs
herumkopieren; das würde ich doch vom Installationsprogramm erledigen lassen.

Unter NT spielt sich alles zusätzlich auf der Registry ab; dort werden die
beschriebenen Teile als Nodes aufgeführt:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC]

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI]

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources]
„R522“=„Oracle ODBC Driver“

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\R522]
„Driver“=„D:\orant\BIN\SQORA32.DLL“
„Description“=„TEST auf R9720522“
„ServerName“=„R522“
„UserID“=„TEST“
„Translation Option“=„0“
„Translation DLL“=""
„Attributes“=„W“
„Application Attributes“=„T“
„PrefetchCount“=„1“

usw., schau mal hier nach, wie es bei Deiner Installation aussieht, und was Du dann eintragen mußt.

Gruß und viel Spaß

J.

P.S. Kleiner Dicker, ich dachte, das wär ich…

ODBC.INI ist schon etwas veraltet!

Das ganze steht jetzt in der Registry unter [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI]. Ich habe das ganze schon mit VB gemacht - habe aber zu wenig Ahnung von VC++/MFC um Dir helfen zu können. Einen Tip kann ich Dir aber geben: RegObject ist eine ActiveX-Komponente, mit der Du einfach und schnell auf die Registry zugreifen kannst.

LG, Stefan.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]