delphi数据库,打包的问题,高手请进(50分)

  • 主题发起人 主题发起人 ★蓝天★
  • 开始时间 开始时间

★蓝天★

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个数据库程序。用adoconnection 在属性connectionstring中选了microsoft jet 4.0 OLE db provide,再把我的d:/aa/a.mdb access数据库选上。adoquery1 连接上adoconnection .程序我已完成。我也没有用什么bde。当我把文件夹aa改成bb时,程序就不能运行,提示不能找到d:/aa/a.mdb 我想用delphi中自已带 的打包程序来打包,但我不知怎么用这个工具, 我在set the visual design中按书中的例子完成了。但在select installshield objects for delphi中 不知道怎么设,书上的例子是用了bde的,但我不知我的那个程序该怎么样设?请高手指点
 
把adoconnection的路径改成相对路径就可以了!选择数据库时,直接输入a.mdb
 
方法1;你的数据库跟你的程序在一个目录中,你动态指定连接字符串就行了.
在datasource中设定为application.execname; o

方法2:
调出连接串编辑对话框
当发布一个使用 ADO 连接的应用程序时,开发者有时需要在应用程序里设置 ADO 的连接串。ADO 连接串既长又复杂。我常将他们存贮在注册表中。但是,假如我需要生成一个新的串,困难出现了。从前我只好运行 Delphi,通过它的 IDE,运行 ADO 连接串的属性编辑器来建立。现在我发现我可以在自己的应用程序中完成这种事情了。
首先,在 uses 语句中包含进 AdoConEd 单元。然后在应用程序需要触发 ADO 连接串编辑器的地方写入如下简单代码。问题迎刃而解。
ADOConnection1.Close;
// calling EditConnectionString displays the dialog, and
// sets the ConnectString property to the resulting value.
if EditConnectionString(ADOConnection1) then begin
//display the resulting ADO Connect String, just for fun.
label11.caption := ADOConnection1.ConnectionString;
end;
然后你自己保存label1.caption,下次启动读它就行了.
 
to:hbezwwl 我用了flashdelphi的方法,现在程序已能在不同的目录下运行 了,而且我也
可以进行打包了。但你所说的那些是什么时候用的?你所说的
‘应用程序需要触发 ADO 连接串编辑器的地方’具体是指哪里?我有点不懂。还有我现在的程序
打包后运行setup后,在开始菜单中为什么没有反安装程序?
 
没人知道吗?
 
我所说的是在程序中打开ado连接向导,让自己配置就行了.
然后把连接串写入注册表也行,其它的地方也行.
不过写成动态连接也行.

//你说的程序没有反安装程序,你用的什么工具打包的.
 
反安装,在 添加/删除程序 可以看见的话,也可以啊,不一定要在菜单里面有
 
在installsheild中有一项是添加一个文件到包中,你选上你的数据库,然后把adoconnection
中的绝对路径改成相对路径就可以了
 
改成相对路径最方便,做成安装程序时,也不用再作什么设置。
 
把数据库和可执行文件放在一起,放在别的地方也行,
下面是一行代码
var
str:widestring;
begin
str:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+extractfilepath(application.ExeName)+'/holun.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;
ADOConnection1.ConnectionString:=str;
ADOConnection1.Open;
 
改成相对路径就可以了 aa/a.mdb
 
第一次运行里叫用户自己去指定数据库路径了
 
接受答案了.
 
后退
顶部