这个问题应该怎样解决??(44分)

  • 主题发起人 主题发起人 yhwyb
  • 开始时间 开始时间
Y

yhwyb

Unregistered / Unconfirmed
GUEST, unregistred user!
用D5+BDE做了一个应用程序,用WISE做安装程序,用户在安装时,自选了盘符和目录,
结果应用程序无法运行。数据源设置时我用的是绝对地址如c:/xxx,请高手指点一下,
应该怎样做才能达到这样的效果:在用户安装时可任意定盘符和目录。如果能做到的话,
那数据库又应该怎样设置呢?
 
用相对目录
Paramstr(0) 返回主程序绝对位置,包含主程序文件名
ExtractFilePath(paramstr(0)) 返回主程序所在目录.
 
Application.ExeName返回exe文件的全路径。
另外,Wise应该可以指定相对目录的,你仔细看以下
 
snowsky的做法返加主程序所在目錄加上使用一個.INI文件保存一些可變配置參數
如程序在目錄中未找到相關INI文件出件一個界面提示用戶配置不就好了
 
似懂非懂,能稍微细一点吗?
 
数据源设置时用:ExtractFilePath(paramstr(0))+您的数据源 这样不管你装在
哪个目录下就可以使用了。

比如你的数据源文件为:1.mdb
则配置时应为:ExtractFilePath(paramstr(0))+'1.mdb'
安装时把1.mdb和你的主程序放在同一个目录下,这样程序运行时就可以找到你的数据源了。
 
to snowsky:你指的配置是在哪里?在D5的IDE?
 
是不是在配置别时用?
 
to snowsky:按你说的方法,我已成功地将paradox型的应用程序制作完毕。
其方法为:table1.databasename:=Extractfilepath(paramstr(0));
Table1.tablename:='1.db';
Table1.open;
但用ado+access即1.mdb就不行了。
adotable1.datasource:=Extractfilepath(paramstr(0))+'1.mdb';
adoTable1.tablename:='1.db';
adoTable1.open;
希望一定帮个忙,马上就给分,拜托了。。。。
 
对于ADO编程时相对路径不能用此方法。
只要在建立连接字符串时选择数据库后,将路么中的绝对路径改去一下就行。
如:c:/程序所在目录/data/1.mdb
改为:data/1.mdb
这样在设计时打开源文件时会报错,但编译后的程序没有问题。
 
data具体指的是什么?
 
存放数据的目录而已.
 
如果数据库同程序文件在相同的目录下则不需要。
只写数据库名即可。
 
鸣谢谢懒虫007和snowsky,问题总算解决了。
 
adotable1.datasource:=Extractfilepath(paramstr(0))+'1.mdb';
adoTable1.tablename:='1.db';
adoTable1.open;

你的这一句写错了:adoTable1.tablename:='1.db'; 这个tableName应该指向Access数据
库中的某一个表名,这个表是包括在你的1.mdb中的,比如讲,你的1.mdb中有两个表:
表a和表b,那么这个adotable1.tablename:=a这么写,这就是ACCESS和paradox的区别。
ACCESS是把所有的表集合在一个文件(1.mdb)里面的,而paradox每个表是单独的一个文件

extractFilePath是用来取程序路径的函数,其实在程序中你可以使用相对路径,懒虫的方
法就是相对路径。

你的问题已经解了,我写的这一点只是给你做帮助罢了,没别的意思。
 
后退
顶部