标题:是不是VFP 9 在win7存在未知问题啊?这么简单的代码我都找不到问题原因。
取消只看楼主
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
结帖率:84.62%
已结贴  问题点数:4 回复次数:12 
是不是VFP 9 在win7存在未知问题啊?这么简单的代码我都找不到问题原因。

需要在工作区1~5打开表 A1~A5,但是我验证并不成功,验证代码

For i=1 To 5
    ic=Alltrim(Str(i))
    Select i
    a&ic='a'+ic+'.dbf'
    Use (a&ic) In i
Endfor
For i=1 To 5
    Select i
    Messagebox(Dbf(i))
Endfor
搜索更多相关主题的帖子: 工作区 
2016-04-20 15:44
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
Messagebox(Dbf(i))返回的都是空白
Messagebox(Dbf())返回的都是“a5”

哪里有问题?
2016-04-20 15:47
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
你的方法,是可以,但是可以说说我写的错在哪里吗?
2016-04-20 16:29
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用sdta在2016-4-20 16:34:58的发言:

For i=1 To 5
    Select i
    a='a'+Alltrim(Str(i))+'.dbf'
    Use (a) In i
    Messagebox(Dbf(i))
Endfor


你的返回还是空白,不知道怎么回事,“in i”就会出问题,如果改成“i 0”就ok了,难道这个in 后面不能用变量吗?
2016-04-20 16:38
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
但是如果只能用 in 0 的话,那如果我想在特定的工作区打开某个表就不行罗?
2016-04-20 16:52
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用aaaaaa在2016-4-20 16:52:42的发言:

I 是保留字,A-J 都是保留字,比如:
Select 9 等同于 Select I
Use XXX.Dbf In I
这时候的 I 是既是保留字,又是变量,保留字有优先权。
你都在 9 工作区了打开 DBF 文件,后一个文件的打开,关闭了前一个已打开的文件。
是不是这个道理?

或者你要强调 I 是变量,这么改:
Use (a) In m.I

或者循环变量不要用 I,改用 II,或其他没有冲突的字符。

试试看


唉,这个问题搞了我两天,谢谢大家,头脑被搞晕了
2016-04-20 16:56
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用aaaaaa在2016-4-20 16:52:42的发言:

I 是保留字,A-J 都是保留字,比如:
Select 9 等同于 Select I
Use XXX.Dbf In I
这时候的 I 是既是保留字,又是变量,保留字有优先权。
你都在 9 工作区了打开 DBF 文件,后一个文件的打开,关闭了前一个已打开的文件。
是不是这个道理?

或者你要强调 I 是变量,这么改:
Use (a) In m.I

或者循环变量不要用 I,改用 II,或其他没有冲突的字符。

试试看


不行,Use (a&iic) In ii 这句还是发生错误,找不到别名 ii
2016-04-20 17:10
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
gzq=88
USE a1 IN gzq

估计是in后面不能跟变量了,因为 这个也是提示找不到别名 gzq
2016-04-20 17:13
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用aaaaaa在2016-4-20 17:34:54的发言:

Use xxx IN nWorkArea 命令在 FoxPro 2.x 就有该 In 子项的
我只加了 M. 前缀,试试看:

Clear
Close Databases
For i=1 To 5
    ic=Alltrim(Str(i))
    Select i
    a&ic='a'+ic+'.dbf'
    Use (a&ic) In m.i  && 加了 M. 前缀,其他的都没改动,没问题
Endfor
For i=1 To 5
    Select i
    Messagebox(Dbf(i))
Endfor


果然ok了,加个m.是什么意思啊?什么原因?
2016-04-20 18:02
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用aaaaaa在2016-4-20 17:34:54的发言:

Use xxx IN nWorkArea 命令在 FoxPro 2.x 就有该 In 子项的
我只加了 M. 前缀,试试看:

Clear
Close Databases
For i=1 To 5
    ic=Alltrim(Str(i))
    Select i
    a&ic='a'+ic+'.dbf'
    Use (a&ic) In m.i  && 加了 M. 前缀,其他的都没改动,没问题
Endfor
For i=1 To 5
    Select i
    Messagebox(Dbf(i))
Endfor



还是有个问题弄不明白,如下注释

    For i=1 To 5
        ic=Alltrim(Str(i))
        If Used(Strtran(a&ic,'.dbf',''))=.T.   
            Select (a&ic)
            MESSAGEBOX(DBF())
            MESSAGEBOX(ALLTRIM(STR(SELECT(0))))
            SELECT 99   &&week_analyse.dbf 是在99工作区打开的表, 如果没有这句,下面3句代码实际返回的结果不是预期想要的,加这句才能正确,这个怎么解释?
            SELECT ('week_analyse.dbf')
            MESSAGEBOX(DBF())
            MESSAGEBOX(ALLTRIM(STR(SELECT(0))))
        Endif
    Endfor
2016-04-21 09:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463887-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.850083 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved