System-ODBC anlegen per Delphi

Hallo,

ich habe schon in diversen Foren versucht eine gute Lösung zu finden für das Problem.

Ich möchte eine System-ODBC Verbindung (Eintrag) unter WindowsXP anlegen per DELPHI-Programm (2006).

Ich habe gelesen das man die Registy eintrage setzten kann und dann müsste es automatisch funktionieren.

Dies funktioniert auch soweit, jedoch mit einer Einschränkung. Ich sehe dann wenn ich unter System/Verwaltung/ODBC gehe diesen Eintrag nicht in der Übersicht.

Nun meine Frage, hat jemand dies schonmal gemacht und würde er/sie mir vielleicht weiterhelfen bzw. Tipps oder Programmcode geben?

Danke
Bernhard St.

Das folgende Beispiel demonstriert, wie ich damals eine Excel-Tabelle in einem festen Verzeichnis importierte. Auf jedem Fall, die Funktion erzeugt einen ODBC Eintrag. Das kann man in der ODBC-Einstellung sehen. Du mußt nur noch nach deinem Bedarf anpassen.

Function CreateEXCELODBC : Boolean;
Var Reg : TRegistry;
HRootK : string;
Procedure Put2Reg;
begin
//Möchte hier eine Excel Tabelle importieren :smile:
HRootK := ‚\Software\ODBC\ODBC.INI\ImportExcel‘;
Reg.CreateKey(Hrootk);
if Reg.OpenKey(HRootK,true) then
begin
Reg.WriteString(‚Driver‘,GetSystemDir + ‚odbcjt32.dll‘ );
ExcelPath := ExtractFilePath(ParamStr(0))+ ‚ExcelImport\Excel‘;
ForceDirectories (Excelpath);
Reg.WriteString(‚DBQ‘,ExcelPath + ‚Excel2Dataset.xls‘);
Reg.WriteInteger(‚DriverId‘,00000790); //Excel 97-2000
Reg.WriteString(‚FIL‘,‚excel 8.0‘);
Reg.WriteString(‚PWD‘,’’ );
Reg.WriteInteger(‚SafeTransactions‘,0);
Reg.WriteString(‚UID‘,’’);
Reg.CloseKey;
end;
Reg.CreateKey;(’\Software\ODBC\ODBC.INI\ImportExcel’+’\Engines\Excel’);
if Reg.OpenKey(’\Software\ODBC\ODBC.INI\ImportExcel’+’\Engines\Excel’,true) then
begin
Reg.WriteString(‚ImplicitCommitSync‘,’’);
Reg.WriteInteger(‚MaxScanRows‘,00000008);
Reg.WriteInteger(‚PageTimeout‘,00000005);
Reg.WriteInteger(‚Threads‘,00000003);
Reg.Writebool(‚UserCommitSync‘,true);
Reg.CloseKey;
end;
Reg.CreateKey (’\Software\ODBC\ODBC.INI\ODBC Data Sources’);
if Reg.OpenKey(’\Software\ODBC\ODBC.INI\ODBC Data Sources’,true) then
Reg.WriteString(‚ImportExcel‘,‚Microsoft Excel-Treiber (*.xls)‘);
end;
begin
Reg := TRegistry.Create;
try
// Reg.RootKey := HKEY_CURRENT_USER;
// Put2Reg;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Put2Reg;
finally
Reg.Free;
inherited;
end;
end;

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