紧急求助,关于BDE数据库移植问题(100分)

  • 主题发起人 主题发起人 jony
  • 开始时间 开始时间
J

jony

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DELPHI写了个数据库程序,数据库是用BDE建立的DB库(本地库),在原机上运行一切
正常,但在移植到别的机子上时,数据库却无法运行,后来用INSTALLSHIELD作了
个安装程序,在GENERAL OPTIONS中也选了BDE,但安装在别的机子上还是运行不起来,请问
如何处理,急用,谢谢!

JONY
 
1、installsheld时是否选择了必要的BDE文件?
2、尽管用installshield一般不许要考虑,必要时仍然可以检查一下BDE是否安装了。
 
如果是本地库好办!
1.在程序中设置BDE,方法如下:
procedure TForm1.FormCreate(Sender: TObject);
var
ph : TStringList;
begin
ph := TStringList.Create;
Session.GetAliasNames(ph);
if (ph.IndexOf('nldbf') = -1) then //判断别名nldbf是否存在
begin
Session.AddStandardAlias('nldbf', ExtractFilePath(Application.ExeName), 'Paradox'); //Paradox-->数据库类型
Session.SaveConfigFile;
end;
ph.Free;
......
end;

2.制作以BDE为数据库引擎的安装盘
BDE很大,如果全部装的话安装盘要会做的很大!!!其实呢,我们只需要几个文件就
可以了。如下:
把下列文件放到程序的同一目录:(这些文件都在BDE的目录底下)
bantam.dll,farest.btl,idapi32.dll,idbat32.dll,iddbas32.dll(DBF数据库用)idpdx32.dll,idr20009.dll,idsql32.dll(用到Query的话需要这个文件)
这样,我们就可以用其它安装工具(如CreatInstall)做出小巧玲珑的安装盘了。
<a href="http://www.qzone.com/home/w/wi/wind2000/delphi/tools/pcrinst336.zip">CreatInstall安装盘制作工具</a>

这样做的好处:程序可移指数强,并且不用每次都去配置BDE,一切在程序第一次运行
时就搞定了,减少系统的维护量。
缺点:如果你在一台机子上装过后并卸载过,后来又打算再安装,那么你安装的目录必
须和原来的一样,除非你进入BDE设置把原来设置的BDE删除或路径改了。而用以上方
法做出来的安装盘是无法进入BDE设置的。

以上所有技巧和工具在我的主页<a href="http://ph11.126.com">ph11.126.com</a>上都有,欢迎光临。



 
看你的错误是没有正确的设置客户机的BDE配置,我提供一个方法:
将所有的DataSet控件连在一个DataBase上,然后由DataBase动态载入所有的BDE配置,
制作安装程序时只须添加一个你需要的别名和别名的类型就行了.
下面给出一段例程:
我是将所有的数据构件放在一个DataMoudle里,然后在它的Create事件里写下:
begin
with DataBase1 do
begin
close;
params.clear;
Params.add('SERVER NAME=xx.world');
Params.Add('USER NAME=youruser');
Params.Add('PASSWORD=yourpassword');
Params.Add('OPEN MODE=READ/WRITE');
Params.Add('SCHEMA CACHE SIZE=8');
params.Add('LANGDRIVER=');
Params.Add('SQLQRYMODE=');
Params.Add('SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT');
Params.Add('SCHEMA CACHE TIME=-1');
Params.Add('MAX ROWS=-1');
Params.Add('BATCH COUNT=200');
Params.Add('ENABLE SCHEMA CACHE=FALSE');
Params.Add('SCHEMA CACHE DIR=');
Params.add('ENABLE BCD=FALSE');
Params.Add('BLOBS TO CACHE=64');
Params.Add('BLOB SIZE=32');
open;
end;
end;
 
多人接受答案了。
 
后退
顶部