用inno对一个用ado连接access数据库的软件打包,应该怎么设置数据库路径? ( 积分: 20 )

  • 主题发起人 主题发起人 advent_ll1
  • 开始时间 开始时间
A

advent_ll1

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi开发时,我把*.mdb文件和*.exe文件放在同一路径下;
设置adoconnection时,我把路径设为相对路径,比如message.mdb;
打包时,我把message.mdb添加到inno中;
但是打包的安装文件安装过后总是显示找不到message.mdb,而且报错信息的路径还是绝对路径,请问应该怎么弄?
 
用Delphi开发时,我把*.mdb文件和*.exe文件放在同一路径下;
设置adoconnection时,我把路径设为相对路径,比如message.mdb;
打包时,我把message.mdb添加到inno中;
但是打包的安装文件安装过后总是显示找不到message.mdb,而且报错信息的路径还是绝对路径,请问应该怎么弄?
 
读取数据库的路径,再用adoconnect动态连接一下,假设message.mdb与执行文件在同一目录下。
procedure Trsgl_login.FormActivate(Sender: TObject);
lj:string;
//路径
begin
//读取路径
lj:=ExtractFilePath(paramstr(0))+'message.mdb';
//动态连接,动态设置connectstring
....
end;
 
设置connectstring的时候把路径去掉,只留文件名,inno时把数据库当普通文件打包。这不是inno的问题,是你的connectstring没有设置好。
 
procedure TDataModule1.Act_AdoConnectionBeforeConnect(Sender: TObject);
var
Str:string;
begin
if copy(ExtractFilePath(Application.ExeName),2,2)<>':/' then
STR:=copy(ExtractFilePath(Application.ExeName),5,length(ExtractFilePath(Application.ExeName)))+message.mdb;
'
else
STR:=ExtractFilePath(Application.ExeName)+message.mdb;
';
Str:=' Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+STR+
' Mode=Share Deny None;Extended Properties=&quot;&quot;;Jet OLEDB:System database=&quot;&quot;;Jet OLEDB:Registry Path=&quot;&quot;;
'+
' Jet OLEDB:Database Password=&quot;&quot;;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;
'+
' Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=&quot;&quot;;Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;
'+
' Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False ';
Act_AdoConnection.ConnectionString:=str;
end;
把上面的代码放到AdoConnection的BeforeConnect事件里,就不会有你说的问题了
需要在uses 下面加入SysUtils和Forms两个单元
 
后退
顶部