Hallo,
seit gestern Nachmittag habe ich ein Problemchen, das mich jetzt dann
wahnsinnig macht.
Und zwar folgendes:
Mit untenstehendem Code möchte ich „dynamisch“ eine ADO-Verbindung
initiieren. Mit „dynamisch“ meine ich, dass der Pfad zum MDB (Microsoft Jet
Engine 4.0) zur Laufzeit in den ConnectionString geparst wird. Ich bin
hundertprozentig Sicher, dass die Art und Weise wie ich das mache zu einem
gültigen ConnectionString führt.
Ich habe 3 Datenbank-Verbindungen, mit den Namen „JobDB“, „SysDB“ und
„LogDB“. (Dies sind die Namen der TADOConnection-Variablen). Bei Job und
LogDB funktioniert der Code, bei der SysDB bekomme ich folgende
Fehlermeldung:
„Project bla.exe raised exception class EOleExceptino with message „C:\bla
bla\sg_system.mdb“ is not a valid Path. Make sure that the path name is
spelled correctly and you are connected to the server on which th efile
resided. (…)“
Also, das MDB befindet sich im gleichen Verzeichnis wie die beiden anderen
und deren ADO-Connection kommt ja auch mit langen Verzeichnisnamen mit
Abständen und Punkten im Win32-Style zurecht.
Ich vermute es liegt eventuell an der Namensgebung. „SysDB“ oder „SystemDB“
etc. sind vieleicht reserviert ???
Hier der Parser. Der nicht-funktionierende Teil ist ausgeklammert.
const
ADOinfo : array [1…18] of string =
(‚Provider=Microsoft.Jet.OLEDB.4.0;‘,
‚User ID=Admin;‘,
‚Data Source=;‘,
‚Mode=Share Deny None;‘,
‚Extended Properties="";‘,
‚Jet OLEDB:System database="";‘,
‚Jet OLEDB:Registry Path="";‘,
‚Jet OLEDB:smiley:atabase Password="";‘,
‚Jet OLEDB:Engine Type=4;‘,
‚Jet OLEDB:smiley:atabase Locking Mode=0;‘,
‚Jet OLEDB:Global Partial Bulk Ops=2;‘,
‚Jet OLEDB:Global Bulk Transactions=1;‘,
‚Jet OLEDB:New Database Password="";‘,
‚Jet OLEDB:Create System Database=False;‘,
‚Jet OLEDB:Encrypt Database=False;‘,
‚Jet OLEDB:smiley:on‘‚t Copy Locale on Compact=False;‘,
‚Jet OLEDB:Compact Without Replica Repair=False;‘,
‚Jet OLEDB:SFP=False‘);
------Folgender Code wird im OnCreate-Event der MainForm aufgerufen------
for HelpVar := 1 to High(ADOinfo) do
HelpStr := HelpStr + ADOinfo[HelpVar];
Insert(Config.JobDB, HelpStr, Pos(ADOinfo[3], HelpStr) +
Length(ADOinfo[3]) - 1);
ADOmodule.JobDB.ConnectionString := HelpStr;
try
ADOmodule.JobDB.Connected := True;
Status.JobDBok := True;
except
on E: Exception do
begin
ErrorMSG.RaiseError(MN_MANAGER, now, ‚Failed to establish
ADO-Connection to Job-Database (‘ + E.Message + ‚)‘);
Beep;
end;
end;
{ HelpStr := ‚‘;
for HelpVar := 1 to High(ADOinfo) do
HelpStr := HelpStr + ADOinfo[HelpVar];
Insert(Config.SysDB, HelpStr, Pos(ADOinfo[3], HelpStr) +
Length(ADOinfo[3]) - 1);
ADOmodule.SysDB.ConnectionString := HelpStr;
try
ADOmodule.SysDB.Connected := True;
Status.SysDBok := True;
except
on E: Exception do
begin
ErrorMSG.RaiseError(MN_MANAGER, now, ‚Failed to establish
ADO-Connection to System-Database (‘ + E.Message + ‚)‘);
Beep;
end;
end; }
HelpStr := ‚‘;
for HelpVar := 1 to High(ADOinfo) do
HelpStr := HelpStr + ADOinfo[HelpVar];
Insert(Config.LogDB, HelpStr, Pos(ADOinfo[3], HelpStr) +
Length(ADOinfo[3]) - 1);
ADOmodule.LogDB.ConnectionString := HelpStr;
try
ADOmodule.LogDB.Connected := True;
Status.LogDBok := True;
except
on E: Exception do
begin
ErrorMSG.RaiseError(MN_MANAGER, now, ‚Failed to establish
ADO-Connection to Log-Database (‘ + E.Message + ‚)‘);
Beep;
end;
end;
irgendwelche Ideen ?
Roger