如何彻底删除DBF中的记录(100分)

  • 主题发起人 主题发起人 waterflow
  • 开始时间 开始时间
W

waterflow

Unregistered / Unconfirmed
GUEST, unregistred user!
提问前我看过本坛关于这一问题的解决方案
主要有两种方法: 1: 利用BDE的某个函数 2:先在delphi中delete,再调用foxpro编写的exe或DLL函数进行pack。
上述两种方法要求 对DBF文件独占打开(DBE的方法还要求安装BDE那一套)
如何直接利用文件处理的方式直接处理DBF,将其中的某些记录删除,不管此时是否有别的程序是否共享打开该文件?
我接触的系统就可以做到(别的程序打开DBF,执行该程序的某一功能项目就可以删除里面的某些记录)。
谁有这方面的解决经验。
 
不会吧,要彻底删除DBF中的记录,必须独占打开DBF文件,在VFP中也是如此,
你接触的系统源码你是否看到过?除非用临时表。
其实用ADO连DBF也可实现PACK DBF。
 
执行该程序的某一功能项目就可以删除里面的某些记录。是软删除还是物理删除?
你看过吗?软删除只能在DBF中看见,如在程序中,软删除是看不到的。
 
如能实现不独占打开DBF文件就可PACKDBF文件,把代码贴出来看看,学习学习。
 
我要有源代码就好了 这是人家的底层的一些东西。
当然是物理删除了。
我用vf共享打开对应的 dbf文件, 查看内容,有昨天的信息 此时执行程序的相关项 再查看dbf文件 昨天的信息全部没有,里面是当天的信息 (当然程序就是实现该功能)

那个程序是vc写的,调用那家公司自己开发的底层库。
 
难道没有人会?
 
bde底层函数解决方案:
uses bde;
//
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True))
 
首先将TABLE的EXCLUSIVE的属性值设为:TRUE;
uses bde;
其次:Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True)) ;
 
進入vfp
獨占方式打開表
pack搞掂
 
94132195、hongxing_dl、dxj1976好像没有看清楚我的要求,请仔细看开头
 
多人接受答案了。
 
后退
顶部