我用得是DELPHI7+ADO+ODBC,數據庫是ACCESS,該怎樣打包呀?ODBC是文件DSN,打包后無法連接數據庫請指示,謝謝!
解决方案 »
- 关于不安装BDE而访问Paradox数据库的问题,使用网上大侠们介绍的方法,为什么不行?
- quickreport 不能动态设置字体大小吗?
- 请问,如何在程序中利用猫,对指定的号码进行拨号?
- DBGrid属性问题.
- 帮帮忙啊,原来没有错误的,今天出错了,急人啊
- 模拟键盘输入组合键
- 我用ADO连接,用DBGrid打开EXCEL时,在工作区里可以打开,但一执行就出错?
- 请教
- 我是菜鸟一个,不是计算机专业人士,能学会Delphi编程吗?
- 请问如何将自动运行的程序从Ctrl+Alt+Del和Alt+Tab中隐藏?送分200哟!
- 关于Socket的4个问题,请大家指点
- 我在scrollbox上动态添加了按钮和edit,如何用公式全部删除?
var
reg: TRegistry;
bData : array[ 0..0 ] of byte;
DrvPath : string;
begin
reg:= TRegistry.Create;
with reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey('SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)',false) then
begin
DrvPath:=ReadString('Driver');
end
else
begin //´´½¨¼üֵʧ°Ü
//ShowMessage('¹«¹²ÐÅÏ¢'+'£º'+chr(10)+chr(10)+'ÄúûÓÐÕýÈ·°²×°Çý¶¯³ÌÐòMicrosoft Access Driver (*.mdb)£¬ÇëÖØа²×°!','´íÎóÐÅÏ¢', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
Reg.CloseKey;
//ÕÒµ½Software\ODBC\ODBC.INI\ODBC Data Sources
if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
begin
WriteString(aDSN, 'Microsoft Access Driver (*.mdb)' );
end
else
begin //´´½¨¼üֵʧ°Ü
//application.MessageBox('¹«¹²ÐÅÏ¢'+'£º'+chr(10)+chr(10)+'ÅäÖÃODBCÊý¾ÝԴʧ°Ü£¡','´íÎóÐÅÏ¢', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
CloseKey;
//ÕÒµ½»ò´´½¨Software\ODBC\ODBC.INI\msac_infodb,дÈëDSNÅäÖÃÐÅÏ¢
if OpenKey('Software\ODBC\ODBC.INI\'+aDSN,True) then
begin
WriteString( 'DBQ', aDBName);//Êý¾Ý¿âĿ¼£¬Á¬½ÓÄúµÄÊý¾Ý¿â
WriteString( 'Description','ϵͳÐÅÏ¢Êý¾Ý¿âÊý¾ÝÔ´' );//Êý¾ÝÔ´ÃèÊö
//WriteString( 'Driver', 'C:\WINNT\System32\odbcjt32.dll' );
WriteString( 'Driver', DrvPath );//Çý¶¯³ÌÐòDLLÎļþ
WriteInteger( 'DriverId', 25 ); //Çý¶¯³ÌÐò±êʶ
WriteString( 'FIL', 'Ms Access;' );//FilterÒÀ¾Ý
WriteInteger( 'SafeTransaction', 0 );//Ö§³ÖµÄÊÂÎñ²Ù×÷ÊýÄ¿
WriteString( 'UID', '' );//Óû§Ãû³Æ
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 ); //·Ç¶ÀÕ¼·½Ê½
WriteBinaryData( 'ReadOnly', bData, 1 ); //·ÇÖ»¶Á·½Ê½
end
else//´´½¨¼üֵʧ°Ü
begin
//application.MessageBox('¹«¹²ÐÅÏ¢'+'£º'+chr(10)+chr(10)+'ÅäÖÃODBCÊý¾ÝԴʧ°Ü£¡','´íÎóÐÅÏ¢', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
CloseKey;
//ÕÒµ½»ò´´½¨Software\ODBC\ODBC.INI\msac_infodb\Engines\Jet
//дÈëDSNÊý¾Ý¿âÒýÇæÅäÖÃÐÅÏ¢
if OpenKey('Software\ODBC\ODBC.INI\'+aDSN+'\Engines\Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//»º³åÇø´óС
WriteInteger( 'PageTimeout', 10 );//Ò³³¬Ê±
WriteInteger( 'Threads', 3 );//Ö§³ÖµÄÏß³ÌÊýÄ¿
WriteString( 'UserCommitSync', 'Yes' );
end
else//´´½¨¼üֵʧ°Ü
begin
//application.MessageBox('¹«¹²ÐÅÏ¢'+'£º'+chr(10)+chr(10)+'ÅäÖÃODBCÊý¾ÝԴʧ°Ü£¡','´íÎóÐÅÏ¢', mb_applmodal+mb_iconerror+mb_ok+mb_defbutton1);
ConfigAccessOdbc:=false;
exit;
end;
CloseKey;
ConfigAccessOdbc:=True;
Free;
end;
end;不好意思中文都是乱码,这是自动配置ODBC的程序