J
jzg007
Unregistered / Unconfirmed
GUEST, unregistred user!
最近参考别人的程序,发觉动态建立ODBC数据源此功能特别适用,但我在程序调试过程中出现了一些问题,还请各位前辈指教。我的程序如下:<br>procedure TForm1.FormShow(Sender: TObject);<br>var<br> Reg:TRegistry;<br> pathdrive,pathsystem:String;<br> list:TStringList;<br> n_flg:integer ;<br> SysDir:array[ 0..255 ] of char;<br>begin<br> Reg:=TRegistry.Create; //建立一个Registry实例<br> list:=TStringlist.Create;<br> Session.GetAliasNames(list);<br> if (list.IndexOf('test')=-1) then<br> begin<br> n_flg:=messagebox(0,'测试数据库别名不存,现在创建吗(y/n)','提示信息',4) ;<br> if n_flg=IDYES THEN<br> begin<br> with Reg do<br> begin<br> RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE<br> pathdrive:=GetCurrentDir()+'/Data/Data_h.mdb';<br> GetSystemDirectory(SysDir,255);<br> pathsystem:=SysDir+'/odbcjt32.dll';<br> //showmessage(pathdrive);<br> //showmessage(pathsystem);<br> //找到Software/ODBC/ODBC.INI/ODBC Data Sources<br> if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) then<br> begin<br> WriteString('test','Microsoft Access Driver (*.mdb)');<br> end<br> else<br> begin//创建键值失败<br> messagebox(0,'增加ODBC数据源失败','提示信息',0);<br> exit;<br> end;<br> CloseKey;<br> //找到或创建Software/ODBC/ODBC.INI/test,写入DSN配置信息<br> if OpenKey('Software/ODBC/ODBC.INI/test',True) then<br> begin<br> WriteString( 'DBQ',pathdrive); //数据库目录<br> WriteString( 'Driver',pathsystem); //驱动程序DLL文件<br> WriteString( 'FIL', 'MS Access;'); //Filter依据<br> WriteInteger( 'DriverId', 25); //Filter依据<br> WriteString( 'Trusted_Connection', 'Yes'); //支持的事务操作数目<br> WriteInteger( 'SafeTransactions', 0); //Filter依据<br> WriteString( 'UID', ''); //支持的事务操作数目<br> end;<br> CloseKey;<br> end ;<br> Reg.Free;<br> end ;<br> list.Free;<br> end ;<br><br>end;<br><br>end.<br>程序运行后:建立的数据源别名在ODBC的DNS配置信息中存在;同时也写进的相应的注册表中。内容如下:<br>Windows Registry Editor Version 5.00<br><br>[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI/test]<br>"DBQ"="E://心路历程之-程序//delphi7//练习//动态生成数据源//Data//Data_h.mdb"<br>"Driver"="C://WINNT//system32//odbcjt32.dll"<br>"FIL"="MS Access;"<br>"DriverId"=dword:00000019<br>"Trusted_Connection"="Yes"<br>"SafeTransactions"=dword:00000000<br>"UID"=""<br>现在的问题是,进入ODBC数据源的DNS配置页,选择新建立的TEST数据源,发觉次数据源的“数据库”为空?没有具体的路径信息???但注册表中怎么有详细的路径信息?<br>困惑许久,希望会的前辈给予帮助。谢谢!