回 帖 发 新 帖 刷新版面

主题:求助各位高手,关于路径的问题?

请教各位高手:我做了一个表单,是根据输入的条件调用数据表中的内容,表单“确定”按钮的click事件的代码中是用的‘USE XLRB&&表的名字’语句来打开和调用表格。但是每次运行表单时,总是出现“程序错误”的提示,上面写着写着“文件‘.........(注:路径)’不存在。”,如果这时占击“忽略”,然后再自己去搜索路径,则表单还是能正确运行;即使加上了主程序时也同样有这个毛病,以前看过一篇文章,说这是路径上的问题,但又不知道改进的办法,求高手指点了!!

回复列表 (共14个回复)

沙发

设置默认工作目录 
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


板凳

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 楼

2 楼的老师讲的对!

一楼基本就是在误导网友呢。

现在的路径中,可以包含好多的符号,宏替换就根本无法区别的。
所以必须使用 ()路径替换符。

4 楼

既然知道了了路径,还用设置什么啊!
直接

use d:\data\表名

不就行了吗?

5 楼

这么个高手
怎么连
sys(5)+sys(2003)

都不知道怎么用啊。 

 M_path=sys(5)+sys(2003)+'\XLRB'
 use &M_path



use XLRB

有区别吗??

6 楼

回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 楼

foxdb别动气,老cbl一天到晚实在太无聊了,老想找人跟他吵一吵,你就体谅一下吧。

8 楼


在下谢谢各位高手了!各位说的办法都试过,未能彻底解决,最后无奈之下,将软件文件夹里面的所有子文件夹如:datas,forms,progs等都一律取消,让他全部文件都乱糟糟地放在总的一个文件夹里,结果路径问题算是解决了,但这种不规范的做法毕竟权宜,如有机会,还望得到指点!

9 楼

把你的 主程序.prg,放到和子目录同级的,主目录中:
在 主程序.prg 中,写入:

CD (JUSTPATH(SYS(16,1)))

SET PATH TO datas,forms,progs,……

10 楼

注意:
1: 主程序不要放到子目录中,一定要放在与子目录同级的主目录中。
2:程序中的相对路径都要去掉或修改。
3:所有的文件都要放在,以上指定的目录中,或主目录中。

我来回复

您尚未登录,请登录后再回复。点此登录或注册