注册 登录
编程论坛 VFP论坛

vfp自编的程序在2个台式机上运行正常,而在笔记本上运行出错:文件必须以独占方式打开。而已以独占方式打开这个表了。

yh1966 发布于 2020-07-12 20:34, 1895 次点击
vfp自编的程序在2个台式机上运行正常,而在笔记本上运行出错:文件必须以独占方式打开。而已以独占方式打开这个表了。
close tables
if used('jlxztj')=.t.
*!*    表已打开
else
*!*    表未打开
    USE JLXZTJ IN 0 EXCLUSIVE
endi
select jlxztj
delete
zap

好像不能识别是的?请高手们帮忙解决,谢谢!
4 回复
#2
吹水佬2020-07-12 21:18
先试试:
close tables
USE JLXZTJ
zap
#3
hu9jj2020-07-13 15:45
应该与电脑无关,会不会是重复打开了程序?
#4
xuminxz2020-07-14 15:37
if used('jlxztj')&& 表已打开先关闭
    USE in JLXZTJ
endi
USE JLXZTJIN 0 &&& 一般不需要EXCLUSIVE,除非你对环境做了特殊设置。
select jlxztj
***delete 这句没有意义
zap
#5
总是出错2020-08-24 23:33
回复 2楼 吹水佬
你好,我对这个独占方式一直没有搞懂。如果用USB打开表。理论上就是独占方式打开的,如同你刚才 的示例。那么。SELE 只是指定当前得工作区(表)。
按独占设置的说明,如果表已经打开,独占设置无效。也就是说,如果是独占方式打开得表,此时得设置无法改变表是否独占得状况。但是我们经常在PACK命令后,系统回提示你要用独占得方式打开表。在缓冲表得时候也是如此。更有让人无法理解的是,此时关闭了行缓冲和表缓冲依然无法执行PACK命令。我通常的解决办法是不用PACK命令,只让 SET TELETE ON,然后再下一次打开项目的时候,打开表,执行物理删除命令PACK.可否对这个问题详细的讲解一下。譬如,表单的数据表,都不会再用打开命令,而是直接用SELE .此时的表应该不是独占方式打开的(因为无法执行PACK)
1