如何读取DBF文件中已经标记为删除的纪录

coolsay 2004-09-24 10:10:42
有个dbf文件,有些纪录被标记为删除,可是我现在需要读取它,该怎么读?我没有权限更改这个DBF文件
...全文
384 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumylove1234 2004-09-25
  • 打赏
  • 举报
回复
Mark!
cqm2099 2004-09-25
  • 打赏
  • 举报
回复
up
lovebeethoven 2004-09-24
  • 打赏
  • 举报
回复
没打删除标记的,那个位有的为20,有的为54(T),不知为啥
lovebeethoven 2004-09-24
  • 打赏
  • 举报
回复
知道一点关于DBF的信息,希望对你有帮助
你用ULTRAEDIT以二进制打开DBF文件,第5.6字节说明记录的个数(不过你得掉过来,就是6.5字节),第9字节为字段说明大小(好象为字) ,第11字节为每个记录大小
如果某个记录被打上删除标志,记录第一个字节为2A(即 * 号)
yijiansong 2004-09-24
  • 打赏
  • 举报
回复
没有权限更改这个DBF文件
无法读
RUKYO 2004-09-24
  • 打赏
  • 举报
回复
http://www.china-askpro.com/msg1/qa52.shtml

VB对FOXPRO数据库操作时能否Pack



编号:QA000052
建立日期: 1997年12月11日 最后修改日期:2002年1月20日
所属类别:

Visual Basic - 数据库

ggao:
我用VB对FOXPRO数据库操作,遇到这样一个问题: 只能对记录进行DEL,也就是在该条记录上打一个删除标记,但不能象在数据库中那样,用“PACK”把这条记录真正删除。当记录数较多时, 用DBGRID等控件做的程序都会出错。该怎样办呢?

回答:

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事件执行(建议)
(我编写的一个管理系统就经常用此方法的,简单方便)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧