第一种方法:使用LOCK()函数,将你要进行删除的记录或表锁定,操作完毕之后再用UNLOCK命令进行解锁,不过这个函数不是很有效,在操作的过程中需要涉及到一些相关的参数,如SET MULTILOCK必须为ON; 另一种比较容易的方法是,在进行DELETE之前先执行 set multilocks on &&设置锁定表有效 set reprocess to 0 select 1 &&表所在工作区 if flock(1) &&判断当前表是否锁定,记录将自动删除 use use 表名.DBF in 1 set safety off zap set safety on use use 表名.DBF share in 1 else &&弹出出错信息 wait "文件正在被其它程序调用,请稍候再试!" nowait window endif
To xiaowei_2002(小魏!): 命令zap不是把整个数据表给清除掉了吗?! 要是同时有几个程序使用 USE mydata.dbf shared打开数据表,行不行呀?
另一种比较容易的方法是,在进行DELETE之前先执行
set multilocks on &&设置锁定表有效
set reprocess to 0
select 1 &&表所在工作区
if flock(1) &&判断当前表是否锁定,记录将自动删除
use
use 表名.DBF in 1
set safety off
zap
set safety on
use
use 表名.DBF share in 1
else &&弹出出错信息
wait "文件正在被其它程序调用,请稍候再试!" nowait window
endif
命令zap不是把整个数据表给清除掉了吗?!
要是同时有几个程序使用 USE mydata.dbf shared打开数据表,行不行呀?
在share方式下打开,就必须用锁定记录或表。可以几个程序员同时共享使用表,然后在试着去锁定表,当锁定成功时,再删除记录。我觉得这种多用户使用的问题,使用vfp单机版已经不是最好的选择,我觉得你可以使用vfp+sqlserver.你会发现你的开发水平直接上升了一个档次。因为你会了c/s模式。而且这种模式下,你的数据安全了很多。