好象只能作删除标记,要PACK必须独占打开

解决方案 »

  1.   

    真的没有办法解决吗?!VFP的功能这么差吗?!救命呀!!!!
      

  2.   

    第一种方法:使用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
      

  3.   

    To xiaowei_2002(小魏!):
    命令zap不是把整个数据表给清除掉了吗?!
    要是同时有几个程序使用  USE mydata.dbf shared打开数据表,行不行呀?
      

  4.   

    xiaowei_2002(小魏!)说的是对的。
    在share方式下打开,就必须用锁定记录或表。可以几个程序员同时共享使用表,然后在试着去锁定表,当锁定成功时,再删除记录。我觉得这种多用户使用的问题,使用vfp单机版已经不是最好的选择,我觉得你可以使用vfp+sqlserver.你会发现你的开发水平直接上升了一个档次。因为你会了c/s模式。而且这种模式下,你的数据安全了很多。