打包的问题:在桌面上建立一个快捷方式,运行该快捷方式,找不到数据库是怎么回事? ( 积分: 10 )

  • 主题发起人 主题发起人 zzz_222
  • 开始时间 开始时间
Z

zzz_222

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库放在目标程序的/DATA下,用ADO连接的,ADOCONNECTION的CONNECTIONSTRING是这样设置的:Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=data/uritest2005_data.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";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="";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
请问该如何使桌面的快捷方式也能正常运行。
运行桌面快捷方式时提示:'C:/Documents and Settings/Administrator/桌面/data/uritest2005_data.mdb'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
 
我的数据库放在目标程序的/DATA下,用ADO连接的,ADOCONNECTION的CONNECTIONSTRING是这样设置的:Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=data/uritest2005_data.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";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="";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
请问该如何使桌面的快捷方式也能正常运行。
运行桌面快捷方式时提示:'C:/Documents and Settings/Administrator/桌面/data/uritest2005_data.mdb'不是一个有效的路径。确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
 
将快捷方式属性中的“起始位置”改为你的程序所在的目录就可以了。
 
对,真正路径没有找到。如上所解
 
这种,你要先保存CONNECTIONSTRING,然后动态的加载文件路径,提示有此问题,就是没有找到数据库文件
 
我用WIS打包的,没找到快捷方式的“起始位置”
 
那肯定是你打包有问题吧
 
我的程序能运行,只是数据库的路径有问题。我觉得应该是ADOCONNECTION的设置问题上
 
我觉得是设置下面这个,不知道该如何设置
ADOCONNECTION的CONNECTIONSTRING中的Data Source=data/uritest2005_data.mdb;
 
把你的CONNECTIONSTRING改成
'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+ExtractFilePath(Application.ExeName)+'data/uritest2005_data.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";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="";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
重点是把ExtractFilePath(Application.ExeName)加到CONNECTIONSTRING里面去,这样无论你到那里都是相对主程序目录的路径
在WIS中有一个%MAINDIR%好像指的就是程序的当前目录,不过没有后面的那个'/',我用WIS9直接就可以建立桌面快捷方式,应该不会出这样的错呀

 
改成这样后会出错啊
Data Source='+ExtractFilePath(Application.ExeName)+'data/uritest2005_data.mdb;
我用的也是WIS9.02,就是用了它的那个快捷方式的设置,程序能运行,就是找不到数据库文件
 
我是用联接文件(如shang.udl),这是文本文件,你可以用记事本先建。在程序中修改它,然后再联数据库。修改过程如下:
shangfilename:=ExtractFilePath(ParamStr(0))+'shang.udl'; //数据库设定
f:=tinifile.Create(shangfilename);
//Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/shang/IVR01/bin/bank.mdb;Persist Security Info=False
f.Writestring('oledb','Provider','Microsoft.Jet.OLEDB.4.0;Data Source='+shangpath+'bank.mdb;Persist Security Info=False');
f.Free;
 
先谢谢shangchao,你上面那个放在哪个事件中呢?那个文本文件是个空文件吗?
 
郁闷啊,如果我不用打包程序创建快捷,而是等安装好程序后,再用右键创建快捷就没有那样的问题了,看来还是打包的时候快捷方式的设置问题,到底是该如何设置呢?
 
用WISe打包的,设置快捷方式的“默认目录”
 
放到打开数据库前面就行。那个文件不是空的,设计中就需要。可以自己建。
我开始是copy了一个别人的,你在盘上查一下*.udl。然后把它copy到你的目录中。再用记事本打开看看。按自己的需要修改一下,如文件名等。
好象有一个demos.udl.
 
不知道你建立的快捷方式到底指向的是那个,是程序还是数据库,如果指向的程序,那那个连接字符串应该加到程序的formcreate中去,怎么会出现你说的错误呢
 
多人接受答案了。
 
后退
顶部