delphi连接access的路径问题?我要打包!(50分)

  • 主题发起人 主题发起人 调皮儿
  • 开始时间 开始时间

调皮儿

Unregistered / Unconfirmed
GUEST, unregistred user!
之前连access,用ADO连接,用ADOconnection做的,正常access就直接是绝对路径了,就是Data Source=E:/工作程序/tel.mdb,后来从网上查到,说,直接把前面去掉就成为相对路径了,于是改为:Data Source=tel.mdb;这样是可以了,也不用什么ODBC了。可到最后打包时出问题了:<br>我用inno打包的,附加了access数据库,生成了一个安装程序,我开始安装这个程序,创建了一个桌面图标,点到最后,我点“直接运行程序”,好用,然后当我把程序关了,再点桌面上的图标时,就出错误了,说找不到C:/Documents and settings/Adiministrator/桌面/tel.mdb。也就是说,这个图标在搜索它桌面上的相对路径的数据库呢!可这时数据库被装在c:/program files/程序 这个文件夹下了啊,我如果运行这个文件夹下的应用图标就好使,点快捷方式的就不行!这是怎么回事啊,要怎么改呢?
 
用相对路径吧。。。<br>../temp/aa.db
 
刚才我看了一下,我把安装程序目录下“c:/program files/程序”这里的执行文件创建个桌面快捷方式,运行,好用!这个快捷方式和安装程序时的桌面快捷方式的不同点在于,它们右键属性中,有个“起始位置”,我手动设置的快捷方式:目标和起始位置都有内容,起始位置是:"C:/Program Files/电话"。而安装程序时创建的快捷方式里“起始位置”是空的,我把这个内容复制到这个快捷方式里就好用了<br>那我总不能给别人装程序还要告诉他们得手动加这个起始位置呀??
 
可通过动态设置ADOConnection的CconectionString,连接前获取应用程序目录,动态设置就好了。如下:<br>procedure TDataMod.DataModuleCreate(Sender: TObject);<br>&nbsp; var<br>&nbsp; &nbsp; strJ:string;<br>begin<br>&nbsp; strJ :='provider=Microsoft.Jet.OLEDB.4.0;user ID=Admin;Data Source='<br>&nbsp; &nbsp; &nbsp; [red]+ExtractFilePath(Application.ExeName)+'ABC.mdb;'[/red]<br>&nbsp; &nbsp; &nbsp; +'Mode=Share Deny None;Extended Properties="";'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:System database="";'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Registry Path="";'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Database Password="123";' //设定密码为123<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Engine Type=5;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Database Locking Mode=1;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Global Partial Bulk Ops=2;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Global Bulk Transactions=1;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:New Database Password="";'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Create System Database=False;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Encrypt Database=False;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Don'+''''+'t Copy Locale on Compact=False;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:Compact Without Replica Repair=False;'<br>&nbsp; &nbsp; &nbsp; +'Jet OLEDB:SFP=False';<br>&nbsp; Ado_con1.LoginPrompt := False;<br>&nbsp; Ado_con1.ConnectionString := strJ ;<br>end;
 
呵呵,我已经知道原因了!在C盘下安装文件夹里运行这个执行程序的图标就好使,外面桌面的就不好使,只要把外面桌面的图标,右键属性里的“起始位置”加上路径就好使。<br>我用的是inno的打包文件,可能是inno这里的问题吧,或者是我的inno版本老,我在icons里加上两个WorkingDir: "{app}"就好使了加上之后是这样的:<br>[Icons]<br>Name: "{group}/登山"; Filename: "{app}/Project1.exe";WorkingDir: "{app}"<br>Name: "{group}/{cm:UninstallProgram,登山}"; Filename: "{uninstallexe}"<br>Name: "{userdesktop}/登山"; Filename: "{app}/Project1.exe"; WorkingDir: "{app}";Tasks: desktopicon<br>嘿嘿,搞定!也谢谢两位的回答,互相帮助!<br>有没有好心人告诉我,这到底是不是inno的小漏洞,它忘记加这句话了?还是我的inno版本问题?我的是inno setup5.
 
后退
顶部