| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3079 人关注过本帖
标题:是不是VFP 9 在win7存在未知问题啊?这么简单的代码我都找不到问题原因。
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42996
注 册:2014-5-20
收藏
得分:1 
以下是引用琅拿度在2016-4-20 16:52:54的发言:

但是如果只能用 in 0 的话,那如果我想在特定的工作区打开某个表就不行罗?

用别名
2016-04-20 20:13
琅拿度
Rank: 1
等 级:新手上路
帖 子:163
专家分: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
琅拿度
Rank: 1
等 级:新手上路
帖 子:163
专家分:5
注 册:2016-4-7
收藏
得分:0 
对于已经分别在各个工作区打开的表,select(别名)就可以同时选择到该表及工作区,为何独独99这个要加 select 99 呢?
2016-04-21 09:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42996
注 册:2014-5-20
收藏
得分:0 
以下是引用琅拿度在2016-4-21 09:13:21的发言:

对于已经分别在各个工作区打开的表,select(别名)就可以同时选择到该表及工作区,为何独独99这个要加 select 99 呢?

SELECT 99
USE ("week_analyse.dbf")
SELECT 0
? DBF()
? SELECT(0)
SELECT ("week_analyse")
? DBF()
? SELECT(0)
2016-04-21 09:22
琅拿度
Rank: 1
等 级:新手上路
帖 子:163
专家分:5
注 册:2016-4-7
收藏
得分:0 
哎呀,找到原因了
Use ('week_analyse.dbf') Alias w_a In 99

因为我使用了“别名”去打开这个表,所以无论是USED() select()都要使用别名去判断

所以改成下面就没有问题了:

    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 ('w_a')
            MESSAGEBOX(DBF())
            MESSAGEBOX(ALLTRIM(STR(SELECT(0))))
        Endif
    Endfor
2016-04-21 09:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42996
注 册:2014-5-20
收藏
得分:0 
注意区分表名与别名的区别
打开表时最好声明别名:
程序代码:
SELECT 99
USE ("week_analyse.dbf") ALIAS week_analyse_1
USE ("week_analyse.dbf") ALIAS week_analyse_2 AGAIN IN 0
SELECT ("week_analyse_2")
? DBF()
? SELECT()
SELECT ("week_analyse_1")
? DBF()
? SELECT()
2016-04-21 09:34
琅拿度
Rank: 1
等 级:新手上路
帖 子:163
专家分:5
注 册:2016-4-7
收藏
得分:0 
谢谢大家,暂时搞定
2016-04-21 09:38
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11783
专家分:43421
注 册:2006-5-13
收藏
得分:0 
用工作区名称来选择表有很多缺陷,比较好的办法是用表别名来选择工作区,这样很好记忆,也不用关心要打开一个新表时会不会影响到原来的旧表补不小心关闭。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-04-21 11:09
快速回复:是不是VFP 9 在win7存在未知问题啊?这么简单的代码我都找不到问题原因 ...
数据加载中...
 
   



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

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