Access的动态配置问题
string path,pathb,dbpath,result
int k
path="HKEY_CURRENT_USER/Software/ODBC/ODBC.INI/dsn_name"
pathb="HKEY_CURRENT_USER/Software/ODBC/ODBC.INI/ODBC Data Sources/"
k=registryget(path, "DBQ", result)
if k<>1 then
dbpath=GetCurrentDirectory( )+"/db_name.mdb"
registrySet(path, "DBQ", RegString!,dbpath)
registrySet(path, "Driver", RegString!,"C:/WINDOWS/system32/odbcjt32.dll")
registrySet(path, "DriverId", ReguLong!,25)
registrySet(path, "FIL", RegString!, "MS Access")
registrySet(path, "UID", RegString!, "")
registrySet(path, "PWD", RegString!, "")
registrySet(path, "SafeTransactions", ReguLong!, 0)
registrySet(pathb, "dsn_name", RegString!, "Microsoft Access Driver(*.mdb)")
end if
配置时可打开注册表,参照一下里面的内容,就知道为什么要这么配置了。
************************************************************************************
怎样在程序中动态配置连接SQL SERVER的ODBC
建立一个system DSN:
GetMem(WinDir,256);
GetWindowsDirectory(WinDir,128);
//
MyReg:=TRegistry.Create;
MyReg.RootKey:=HKEY_LOCAL_MACHINE;
if not MyReg.KeyExists('SoftWare/ODBC/ODBC.INI/_ODBC_Name')then
begin
MyReg.OpenKey('SoftWare/ODBC/ODBC.INI/_ODBC_Name',True);
end
else
begin
MyReg.OpenKey('SoftWare/ODBC/ODBC.INI/_ODBC_Name',False);
end;
MyReg.WriteString('Database','_dataBaseName ');
MyReg.WriteString('Driver',WinDir+'/System32/SQLSRV32.dll');
MyReg.WriteString('LastUser',_帐号);
MyReg.WriteString('Server','(local)');
MyReg.CloseKey;
if not MyReg.KeyExists('SoftWare/ODBC/ODBC.INI/ODBC Data Sources')then
begin
MyReg.OpenKey('SoftWare/ODBC/ODBC.INI/ODBC Data Sources',True);
end
else
begin
MyReg.OpenKey('SoftWare/ODBC/ODBC.INI/ODBC Data Sources',False);
end;
MyReg.WriteString('_ODBC_Name','SQL Server');
MyReg.CloseKey;
MyReg.Free;
///
带“_”的为自定义的字符串。