VFP菜单设计,过程代码中关于 !used()
做题中,题目让先打开表并进行一些设置。有的答案是:!used("表名")use表名endif而有的答案则是直接use表名请问这两种能否互换,有没有标准只能用哪一种不能用另...
做题中,题目让先打开表并进行一些设置。
有的答案是:!used("表名")
use 表名
endif
而有的答案则是直接 use 表名
请问这两种能否互换,有没有标准只能用哪一种不能用另一种 展开
有的答案是:!used("表名")
use 表名
endif
而有的答案则是直接 use 表名
请问这两种能否互换,有没有标准只能用哪一种不能用另一种 展开
展开全部
两个方法的结果都是要打开一个表来使用它。所不同的是直接use可能会导致一个问题比如:
select 1
use Abc
sele 2
use Abc
这时会出现冲突,因为A表已经在第一工作区独占打开了,所以在第二工作区再试图独占打开的话会失败。
而第一种方法的作用就是在打开这个表之前先判断一下是否已经在别的工作区打开
比如:
select 1
use Abc
sele 2
if !used("abc")
use abc
else
select abc
endif
这种方法就不会出现冲突,因为abc已经在第一工作区打开了,所以used函数会返回.t.,加个!求反以后就是.f.,所以执行else以后的语句也就是把当前工作区切换到abc所在的工作区,不发生冲突。只有ABC没有在任何工作区打开的情况下,那么!used()的值是.t.,这时打开就打开abc,也不会冲突。
select 1
use Abc
sele 2
use Abc
这时会出现冲突,因为A表已经在第一工作区独占打开了,所以在第二工作区再试图独占打开的话会失败。
而第一种方法的作用就是在打开这个表之前先判断一下是否已经在别的工作区打开
比如:
select 1
use Abc
sele 2
if !used("abc")
use abc
else
select abc
endif
这种方法就不会出现冲突,因为abc已经在第一工作区打开了,所以used函数会返回.t.,加个!求反以后就是.f.,所以执行else以后的语句也就是把当前工作区切换到abc所在的工作区,不发生冲突。只有ABC没有在任何工作区打开的情况下,那么!used()的值是.t.,这时打开就打开abc,也不会冲突。
追问
那么请问,我在做题目的时候,对于两种方法该如何取舍呢?一般题目中都不会明说某个表是否已经打开,做的是菜单设计过程代码的一些题目。
追答
做题目的时候一般就直接用use就行了,只是要避免在题目中出现冲突,即不要出现类似这样的代码
select 1
use Abc
sele 2
use Abc
表单中需要特别注意,因为表单的数据环境中的表在表单运行的时候是自动打开的,如果你写代码的时候再次打开可能会冲突,这时可以考虑判断一下。
其实说白了,第二种方法更谨慎,用第二种方法肯定不会错,就是要麻烦一点,如果你想确保正确,任何场合都可以用第二种。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询