Dzwebs.Net

撰写电脑技术杂文十余年

打开dbf数据表提示“not a table”

Admin | 2016-5-17 11:16:43 | 被阅次数 | 13805

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  如果使用vfp打开dbf文件,甚至是使用VFP编写的程序打开的dbf文件,如果遇到“not a table”的错误提示,请遵循如下的解决办法。

  一、原因所在

  由于vfp或VFP程序经历过突然断电或非法关机的操作,或者程序非法关闭等原因,导致Foxpro数据库.DBF文件被破坏。

  二、解决的办法

  ①用Pctools、NU的Diskedit等工具软件进行恢复

  运行Pctools,选中无法打开的数据库,按E文件进入编辑功能,按F1切换显示模式。

  按F3进行编辑,将开始的第5个字节值减1,按F5存储,然后退出Pctools,启动Foxpro, 发现被破坏的数据库可以打开使用了。

  由于许多操作者并不一定熟悉如何使用Pctools,因此我建议大家可以用比较熟悉的Excel程序根据下面的步骤来进行数据库的恢复。

  ②用Excel进行恢复

  启动Excel,选择"打开"按钮,出现打开对话框,在打开文件类型中选择Dbase/Foxpro(*.DBF)文件类型,再选中被破坏的数据库打开,这时不要做更改,只选择"保存"按钮,会出现"另存为"对话框,仍选择以原来文件名保存,会提示"文件已经存在,是否替换已有文件?",选择"是"。

  然后选择"文件"菜单上的"关闭",会出现提示"数据库文件不是Excel格式,要保留修改吗?

  要保存为Excel格式,单击'是',然后在'保存类型'下拉列表框选'Excel工作簿';

  要用现有格式保存并替换原来的文件,单击'是',然后单击'保存';

  要在关闭文件时维持现有格式并不作保存,单击'否'。"

  由于我们并没有对数据库的记录进行改动,只是为了恢复数据库,所以选择最后一项"在关闭文件时维持现有格式并不作保存",因此单击"否",退出Excel。

  启动Foxpro,再次打开数据库文件,发现数据库文件已可以被打开了,但是观察数据库的结构,会发现数据库结构中的索引不见了,不过数据库的索引文件还存在。我们只需要给数据库Add索引,并选择原来的索引文件Open即可。

  知识拓展:使用代码来解决

  ZX = CREATEOBJECT('excel.application')
  zx.visible=.t.
  zx.Workbooks.Open("d:\zz\GRES2.DBF")
  R=zx.SHEETS(1).UsedRange.ROWS.COUNT &&有数据的总行数
  C=zx.SHEETS(1).UsedRange.COLUMNS.COUNT &&有数据的总列数
  zx.Cells(R,C).Select &&选中数据
  zx.ActiveWorkbook.SaveAs('d:\zz\TEST.DBF',8) &&另存为DBF
  zx.ActiveWorkbook.saved=.t. &&不保存当前EXCEL表
  zx.ActiveWorkbook.close &&关闭表
  zx.quit &&退出EXCEL
  RELEASE zx &&释放变量

  &&TEST.DBF即为修改后的DBF


该杂文来自: 数据库Sql,VFP,Access

上一篇:mssql2005导出为Excel的图文教程

下一篇:为什么删除了很多sqlite数据库的数据后,db文件不

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计