当前位置: 代码迷 >> VFP >> 高手請進-asp.net 中怎么徹底刪除VFP中的資料
  详细解决方案

高手請進-asp.net 中怎么徹底刪除VFP中的資料

热度:6637   发布时间:2013-02-26 00:00:00.0
高手請進--asp.net 中如何徹底刪除VFP中的資料?
在asp.net中刪除VFP資料時,下 "delete "   只是先將其打上標記.
那如何徹底刪除呢   ?即實現   VFP中的 "pack "作用?

------解决方案--------------------------------------------------------
用ADO连接DBF,执行PACK即可
oconnection = CREATEOBJECT( "adodb.connection ")
oconnection.connectionstring = '
Provider=VFPOLEDB.1;Data Source=d:\zz;Password= " ";Collating Sequence=MACHINE '
oconnection.open
oconnection.execute( 'pack 123.dbf)


------解决方案--------------------------------------------------------
请参考:
VB中无法对DBF文件进行PACK,也就是说无法真正地从物理上删除记录。只能把ISAM的设置 Deleted设为On,这样相当于FoxPro的SET DELETED ON,也就是在VB中不显示有删除标记的记录,但是在Fox中仍然可以看到。当安装 Microsoft FoxPro 数据库的驱动程序时,设置程序会在引擎的 Windows 注册表和 ISAM格式子键写入一些缺省值。Microsoft FoxPro 初始化设置在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\3.5\Engines\Xbase 文件夹包含用来访问外部 FoxPro 工作表的 Msxbse35.dll 驱动程序的初始化设置。其中的Deleted用以决定 Microsoft Jet 数据库引擎如何处理已标记为删除的记录的二进制指示器。01 值对应 Microsoft FoxPro 的 SET DELETED ON 命令,且指示 Microsoft Jet 不再检索或定位已删除的记录。00 值对应 Microsoft FoxPro 的 SET DELETED OFF 命令,且指示 Microsoft Jet 对待一个删除的记录像对待任何其它的记录一样。缺省值是 00。在 Windows 95 和 Windows NT 4.0 中的值是二进制类型,而在 Windows NT 3.51 中是 REG_BINARY 类型。
如果要真的Pack,可以将保留的记录拷贝到一个临时数据库中,再覆盖原来的数据库。
*----------------
我倒有一个没办法中的方法(不过此方法只适合你的DBF数据库是你个人使用,而非网上多用户使用):
将以下代码用V_FoxPro编译成可执行文件(PACK.EXE)
PARA FILENAME
IF .NOT. FILE(FILENAME) THEN
MESSAGEBOX ( "指定的数据库 ' "+FILENAME + " ' 没有找到! ")
RETURN
ENDIF

SET EXCLUSIVE ON
USE (FILENAME)
PACK
USE
** CLOSE ALL
RETURN
当每次操作完DBF数据库后关闭连接(db.clos)
然后调用以上程序进行切底删除,方法如下:

...
db.clos
shell "path\pack.exe paht\数据库名 "

或者在Form_Unload事件执行(建议)
  相关解决方案