这是我在网上找到的一份资料:
在程序中设置ODBC的DSN
下面是我写的一个函数,供你参考。请在Uses子句中增加 registry 的引用。
const
CreateDsnErr:TCreateDnsError =('增加ODBC数据源成功!','增加ODBC数据源失败!','没有安装SQL Server的驱动程序!','读取ODBC驱动程序失败!');
Function CreateDsn(const FDSN,FServer,FUser:String):Integer;
var
RegisterTemp:TRegistry;
s:string;
begin
RegisterTemp:=TRegistry.Create;
with RegisterTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;
//首先判断此DSN是否已经存在,如在,则不用继续下去
if OpenKey('Software\ODBC\ODBC.INI\'+FDSN,False) then
begin
CloseKey;
Result:=0;
Free;
exit;
end;
CloseKey;
//判断SQL Server的驱动程序是否已经安装
If OpenKey('Software\ODBC\ODBCINST.INI\ODBC Drivers',False) then
begin
s:=ReadString('SQL Server');
if UpperCase(S)<>'INSTALLED' then
begin
CloseKey;
Result:=2;
Free;
exit;
end;
end
else
begin
CloseKey;
Result:=3;
Free;
exit;
end;
CloseKey;
//寻找SQL Server的驱动程序路径
If OpenKey('Software\ODBC\ODBCINST.INI\SQL Server',False) then
begin
s:=ReadString('Driver');
if S='' then
begin
CloseKey;
Result:=2;
Free;
exit;
end;
end
else
begin
CloseKey;
Result:=2;
Free;
exit;
end;
CloseKey;
//注册一个DSN名称
If OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
WriteString(FDSN,'SQL Server')
else
begin
CloseKey;
Result:=1;
Free;
exit;
end;
CloseKey;
if OpenKey('Software\ODBC\ODBC.INI\'+FDSN,True) then
begin
WriteString('Driver',S);
WriteString('LastUser',FUser);
WriteString('Server',FServer);
end
else
begin
CloseKey;
Result:=1;
Free;
exit;
end;
CloseKey;
Free;
end;
Result:=0;
end;在需要调用的地方:
i:=CreateDsn(FDSN,FServer,FUser);
if i<>0 then
begin
showmessage(CreateDsnErr[i]);
exit;
end;
在程序中设置ODBC的DSN
下面是我写的一个函数,供你参考。请在Uses子句中增加 registry 的引用。
const
CreateDsnErr:TCreateDnsError =('增加ODBC数据源成功!','增加ODBC数据源失败!','没有安装SQL Server的驱动程序!','读取ODBC驱动程序失败!');
Function CreateDsn(const FDSN,FServer,FUser:String):Integer;
var
RegisterTemp:TRegistry;
s:string;
begin
RegisterTemp:=TRegistry.Create;
with RegisterTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;
//首先判断此DSN是否已经存在,如在,则不用继续下去
if OpenKey('Software\ODBC\ODBC.INI\'+FDSN,False) then
begin
CloseKey;
Result:=0;
Free;
exit;
end;
CloseKey;
//判断SQL Server的驱动程序是否已经安装
If OpenKey('Software\ODBC\ODBCINST.INI\ODBC Drivers',False) then
begin
s:=ReadString('SQL Server');
if UpperCase(S)<>'INSTALLED' then
begin
CloseKey;
Result:=2;
Free;
exit;
end;
end
else
begin
CloseKey;
Result:=3;
Free;
exit;
end;
CloseKey;
//寻找SQL Server的驱动程序路径
If OpenKey('Software\ODBC\ODBCINST.INI\SQL Server',False) then
begin
s:=ReadString('Driver');
if S='' then
begin
CloseKey;
Result:=2;
Free;
exit;
end;
end
else
begin
CloseKey;
Result:=2;
Free;
exit;
end;
CloseKey;
//注册一个DSN名称
If OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
WriteString(FDSN,'SQL Server')
else
begin
CloseKey;
Result:=1;
Free;
exit;
end;
CloseKey;
if OpenKey('Software\ODBC\ODBC.INI\'+FDSN,True) then
begin
WriteString('Driver',S);
WriteString('LastUser',FUser);
WriteString('Server',FServer);
end
else
begin
CloseKey;
Result:=1;
Free;
exit;
end;
CloseKey;
Free;
end;
Result:=0;
end;在需要调用的地方:
i:=CreateDsn(FDSN,FServer,FUser);
if i<>0 then
begin
showmessage(CreateDsnErr[i]);
exit;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货