求教!简单问题,请赐教!(20分)

  • 主题发起人 主题发起人 wenpeng
  • 开始时间 开始时间
W

wenpeng

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用代码实现,设置控制面板中的数据源?
 
比如你使用dbgrid,
可以这样
dbgrid1.DataSource:=datam.DataM1.DataSource1;//后面是你的数据源。
如果想删除数据源
dbgrid1.DataSource:=nil;
 
不好意思!没说清楚,是控制面板里的数据源。谢谢。
 
这问题太难了,估计这儿只有我一个人知道了
 
1、参见控制面板控制大全,调用ODBC设置数据源
2、用代码自动设置ODBC,涉及注册表操作。
以上内容,根据需要上网搜索一下即可
 
打开ODBC数据源
Winexec('odbcad32.exe',0);
 
happycyp
你说的只是打开呀,怎么修改呀?
 
以上内容,根据需要上网搜索一下即可

哈哈。。动态设置odbc。。我有别人写的源码。。但我都看不懂。但是只要运行程序吗的odbc就设置好了。
 
dcs_dcs
 
修改的话,可以从注册表下手,所有的DSN都保存在了注册表中
在大富翁离线贴子中,有很多源码。搜索一下就行了。
下面列出一则:
Hjking (2000-06-04 12:01:00)
以下是在程序中动态创建ODBC的DSN数据源代码:
procedure TCreateODBCDSNfrm.CreateDSNBtnClick(Sender: TObject);
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte;
begin
registerTemp := TRegistry.Create;
//建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;
//设置根键值为HKEY_LOCAL_MACHINE
//找到Software/ODBC/ODBC.INI/ODBC Data Sources
if OpenKey('Software/ODBC/ODBC.INI
/ODBC Data Sources',True) then
begin //注册一个DSN名称
WriteString( 'MyAccess', 'Microsoft
Access Driver (*.mdb)' );
end
else
begin//创建键值失败
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;
//找到或创建Software/ODBC/ODBC.INI
/MyAccess,写入DSN配置信息
if OpenKey('Software/ODBC/ODBC.INI
/MyAccess',True) then
begin
WriteString( 'DBQ', 'C:/inetpub/wwwroot
/test.mdb' );//数据库目录,连接您的数据库
WriteString( 'Description',
'我的新数据源' );//数据源描述
WriteString( 'Driver', 'C:/PWIN98/SYSTEM/
odbcjt32.dll' );//驱动程序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
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;
//找到或创建Software/ODBC/ODBC.INI
/MyAccess/Engines/Jet
//写入DSN数据库引擎配置信息
if OpenKey('Software/ODBC/ODBC.INI
/MyAccess/Engines/Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else//创建键值失败
begin
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;
memo1.lines.add('增加新ODBC数据源成功');
Free;
end;
end;

从中您应该可以学会如何更改需要的数据库。
 
厉害!谢谢了!马上送分
 
多人接受答案了。
 
上面的答案太笨了
 
function AddBDEAlias(Path: String): Boolean;
var
tmpS: TSession;
lst: TStrings;
begin
Result := True;

try
tmpS := TSession.Create(nil);
lst := TStringlist.Create;
lst.Clear;

with tmpS do
begin
SessionName := 'tmpS';
Active := True;
tmps.GetAliasNames(lst);
if (lst.IndexOf('djlrdb')>-1) then
begin
Active := False;
exit;
end;
DeleteAlias('djlrdb');
SaveConfigFile;
AddStandardAlias('djlrdb',Path,'PARADOX');
SaveConfigFile;
Active := False;
end;
except
Result := False;
end;
try
tmpS.Free;
lst.Free;
except
end;
end;

类推。。。。。。。。。
 
后退
顶部