如何发布<通过ODBC连接ACCESS2000数据库>delphi5.0程序(100分)

  • 主题发起人 主题发起人 delrw2002
  • 开始时间 开始时间
D

delrw2002

Unregistered / Unconfirmed
GUEST, unregistred user!
1.在程序中使用Tdatabase控件,通过数据库别名方式.
2.我的要实现发布程序可以在对方有ACCESS2000环境安装运行.
3.我在实现中遇到的问题,a:找不到数据库别名?b:BDE引擎初始化错误?

 
我对此表示关注,如有答案请告诉我
 
需要安装
1、BDE数据库驱动引擎——直接拷贝BDE所在目录,然后再在注册表里面进行注册就可以了。
2、Access数据库驱动——到cakk.delphibbs.com里面下载个数据库驱动安装程序。不过你是
需要使用自己的安装程序,最好也是复制文件,然后写注册表
数据库别名,你可以自己在程序中动态配置,也可以在安装程序里面配置好
对于以上文件写注册表位置:
1、BDE的可以从注册表HKEY_LOCAL_MACHINE/SOFTWARE/Borland/Database Engine里面见到
2、不知道。[:(]
 
你说的两个问题其实是一个问题。BDE在做怪,客户机操作系统损坏。先重装BDE,如不能解决
你的客户机如果是WIN98的话,运行“SFC”检查系统文件是否损坏。如果已经损坏的话只能
格式化后重装WIN98,覆盖安装是不能解决问题的。
 
对方已经安装了ACCESS,主要是数据库别名的问题!!
 
安装了Access,并不等于安装了BDE 呀。使用了TDAtaBase控件,还需要安装BDE。
然后配置别名。
 

我的建议 ,通过ado+odbc+access ,最简单,
ado 中设置 dbname1
odbc 中设置一个数据库别名 dbname1,
以后到客户那里只要 也在odbc中加个 dbname1就可以了,
不需要用bde,那个东西经常出错,而且可户端安装很烦琐,
 
1,2应该问题不大。
3。可以动态设置DSN,这里是一个动态建立Excel DSN的函数,稍改一下你就可以实现Access的。
//////////////////////
const
msg1='创建数据失败!';
DSN='savenight_gps';
function CreateUserDSN(filename: string):Boolean;
implementation
function CreateUserDSN(filename: string):Boolean;
var
reg: TRegistry;
bData: array[0..0] of byte;
systemPath: array[0..254] of char;
begin
GetSystemDirectory(systemPath, 255);
reg := TRegistry.Create;
with regdo
begin
RootKey := HKEY_CURRENT_USER;
if OpenKey('SoftWare/ODBC/ODBC.INI/ODBC Data Sources', true) then
begin
WriteString(DSN, 'Microsoft Excel Driver (*.xls)');
end
else
begin
showmessage(msg1);
result:=false;
exit;
end;
CloseKey;
if OpenKey('SoftWare/ODBC/ODBC.INI/'+DSN, true) then
begin
WriteString('DBQ', filename);
WriteString('Driver', systemPath + '/odbcjt32.dll');
WriteInteger('DriverId', $316);
WriteString('FIL', 'excel 8.0;');
WriteInteger('SafeTransaction', 0);
WriteString('UID', '');
bData[0] := 0;
WriteBinaryData('ReadOnly', bData, 1);
//非只读
end
else
begin
showmessage(msg1);
result:=false;
exit;
end;
CloseKey;
if OpenKey('Software/ODBC/ODBC.INI/'+DSN+'/Engines/Excel', True) then
begin
WriteBinaryData('FirstRowHasNames', bData, 1);
WriteString('ImplicitCommitSync', '');
WriteInteger('MaxScanRows', 8);
WriteInteger('Threads', 3);
WriteString('UserCommitSync', 'Yes');
end
else
begin
showmessage(msg1);
result:=false;
exit;
end;
CloseKey;
Free;
end;
result:=true;
end;
 
1。用InstallShield做安装程序,加入BDE。
2。安装ACCESS2000的ODBC驱动程序。
3。建立ODBC的DSN,最好用ODBC的API
4。建立BDE的ALIAS,如果在DSN中已经配置好的话,可以把那个DSN直接当BDE的ALIAS用。
最后建议还是改用ADO来驱ACCESS好些。
 
多谢各位!!!,我现在的做法:
1.在打包工具中写注册表,对ODBC.INI进行操作(直接导入我机器的ODBC.INI键名和键值);
2.在打包工具中将BDE引擎所需的文件写如注册表;
我现在在测试......
 
请问各位老兄:用ADO直接链连,在安装时如何做?
 
多人接受答案了。
 
后退
顶部