主题:求助各位高手,关于路径的问题?
南方闲人
[专家分:0] 发布于 2009-01-03 11:15:00
请教各位高手:我做了一个表单,是根据输入的条件调用数据表中的内容,表单“确定”按钮的click事件的代码中是用的‘USE XLRB&&表的名字’语句来打开和调用表格。但是每次运行表单时,总是出现“程序错误”的提示,上面写着写着“文件‘.........(注:路径)’不存在。”,如果这时占击“忽略”,然后再自己去搜索路径,则表单还是能正确运行;即使加上了主程序时也同样有这个毛病,以前看过一篇文章,说这是路径上的问题,但又不知道改进的办法,求高手指点了!!
回复列表 (共14个回复)
沙发
foxdb [专家分:1830] 发布于 2009-01-03 11:46:00
设置默认工作目录
set default to d:\data
设置路径
set path to data01,data02
这样,vf会自动在d:\data 下查找文件,同时查找
d:\data\data1,d:\data\data02 等子目录.
或直接取盘符路径:
M_path=sys(5)+sys(2003)+'\XLRB'
use &M_path
板凳
wuzhouhong [专家分:10890] 发布于 2009-01-03 14:37:00
use &M_path
对于d:\xyz.dbf这样的文件名来说,是没有问题的,问题在于我们的系统常常安装在Windows系统上,比如C:\Program Files\你的软件\上面,如果这个表也在这个目录上面,那么它的实际路径为“C:\Program Files\你的软件\xyz.dbf”注意,文件名中含有空格!
同样的情况出现在windows“桌面”上面,桌面的路径往往是这样的“C:\Documents and Settings\Administrator\桌面”注意,这里也含有空格!
于是如果使用use &M_path 这样的语句,宏替换展开后就会变成这样use C:\Program Files\你的软件\xyz.dbf 这句VF语句将在运行时爆错!因为在Program和Files之间多了一个空格!不符合VF的语法要求。
正确的做法应该是使用括号表达式。
use (M_path)
3 楼
cbl518 [专家分:57140] 发布于 2009-01-03 19:06:00
2 楼的老师讲的对!
一楼基本就是在误导网友呢。
现在的路径中,可以包含好多的符号,宏替换就根本无法区别的。
所以必须使用 ()路径替换符。
4 楼
cbl518 [专家分:57140] 发布于 2009-01-03 19:16:00
既然知道了了路径,还用设置什么啊!
直接
use d:\data\表名
不就行了吗?
5 楼
cbl518 [专家分:57140] 发布于 2009-01-03 19:21:00
这么个高手
怎么连
sys(5)+sys(2003)
都不知道怎么用啊。
M_path=sys(5)+sys(2003)+'\XLRB'
use &M_path
和
use XLRB
有区别吗??
6 楼
foxdb [专家分:1830] 发布于 2009-01-06 11:27:00
回5楼,,首先谢谢您奉承我为“高手”,但从来我都不认为我是“高手”我只是“狐友”一个,个人爱好而已。
1、sys(5)+sys(2003)的确对“高手”没用,但对“新手”有用。
2、 M_path=sys(5)+sys(2003)+'\XLRB'
use &M_path
和
use XLRB
肯定有区别?否则楼主就不会提问。
3、请注意“或”字,我说的是不同两种环境的两种方法只要其中一种都能解决问题!
4、至于 use (M_path) 那是2楼补充的第三种环境(当目录或文件有空格)的办法。
5、大家可补充完善解决楼主的问题这也是论坛主要作用。我们在这主要是帮楼主解决问题提供办法,至于能不能不解决他的问题,我想听他的意见。我并不是在这里讨论和争论。但“评判”应尊重楼主,交由楼主去做。
6、要是5楼喜欢“讨论和争论”可另发新帖提出话题请大家参与。如果我感兴趣也许会参加。否则我也不再和你讨论。和我一般见识有损您在本坛的“老大”形像。再见!
7 楼
moz [专家分:37620] 发布于 2009-01-07 10:52:00
foxdb别动气,老cbl一天到晚实在太无聊了,老想找人跟他吵一吵,你就体谅一下吧。
8 楼
南方闲人 [专家分:0] 发布于 2009-01-07 16:11:00
在下谢谢各位高手了!各位说的办法都试过,未能彻底解决,最后无奈之下,将软件文件夹里面的所有子文件夹如:datas,forms,progs等都一律取消,让他全部文件都乱糟糟地放在总的一个文件夹里,结果路径问题算是解决了,但这种不规范的做法毕竟权宜,如有机会,还望得到指点!
9 楼
cbl518 [专家分:57140] 发布于 2009-01-07 17:27:00
把你的 主程序.prg,放到和子目录同级的,主目录中:
在 主程序.prg 中,写入:
CD (JUSTPATH(SYS(16,1)))
SET PATH TO datas,forms,progs,……
10 楼
cbl518 [专家分:57140] 发布于 2009-01-07 17:33:00
注意:
1: 主程序不要放到子目录中,一定要放在与子目录同级的主目录中。
2:程序中的相对路径都要去掉或修改。
3:所有的文件都要放在,以上指定的目录中,或主目录中。
我来回复