Delphi重建与删除Foxpro(DBF)数据库索引文件CDX
来源:互联网 发布:aptget卸载软件 编辑:程序博客网 时间:2024/05/19 19:15
我发现DBF文件数据的一个大秘密,因为要用到TBatchMove操作DBF文件,需要使用索引,如果这个DBF文件没有包含索引,可以使用下面的
SQL建立索引:
create index 索引名 on "表名.dbf"(字段名);
但是如果这个DBF文件已经包含索引,可是这个CDX索引文件坏了或是丢失了,用上面的SQL会提示'Index does not exist.File or
directory does not exist.这时候重新创建索引就失败,但是我们可以把这个DBF文件修改为不包含索引文件的类型:修改这个文件的第28个
字节为0就可以了,
procedure TForm1.Button7Click(Sender: TObject);
const
NoIndex:Byte=0;
var
fByte:file of byte;
begin
AssignFile(fByte,'csfzk.dbf');
FileMode:=2;
Reset(fByte);
Seek(fByte,28);
Write(fByte,NoIndex);
CloseFile(fByte);
end;
这样,先把索引文件标识删除了,并把索引文件CDX删除了,再用上面的SQL创建这个CDX文件就好了,不然会提示:'Index already exists';
删除一个DBF文件的索引用下面的SQL:
drop index "表名.dbf".zch
在Delphi中执行和Foxpro中一样的命令:pack all,用下面代码:
需用引用Uses DBiTypes,DBiProcs,DBiErrs三个单元
tbUpdate.Close;
tbUpdate.TableName:='csfzk.dbf';
tbUpdate.Exclusive:=true;
tbUpdate.Open;
DbiPackTable(tbUpdate.DBHandle,tbUpdate.Handle,nil,szFOXPRO,True);
tbUpdate.Close;
如果这个DBF文件包含索引,会把所有记录连同这个索引文件CDX一同删除,这时可以用上面的方法,先创建这个DBF文件的索引文件CDX,然后
把这个DBF文件修改为不包含索引的文件类型,这时需用索引的操作可以进行,而删除记录时也不会把索引给删除了,岂不一举两得!
- Delphi重建与删除Foxpro(DBF)数据库索引文件CDX
- Delphi创建Foxpro(DBF)文件
- .NET读取foxpro dbf文件
- .NET创建FoxPro DBF文件
- Delphi里的索引mdx,cdx
- 读取foxpro格式的dbf文件
- jsp读取foxpro的dbf文件
- Oracle数据库DBF文件误删除解决方案
- Oracle数据库DBF文件误删除解决方案
- Delphi 和Foxpro整合实现txt和dbf互相转换
- Delphi和Foxpro整合实现txt和dbf互相转换
- .NET读取dbf的方式,C#读取foxpro数据库
- oracle删除DBF文件
- ASP对FoxPro自由表(DBF文件)的操作
- vb打开FoxPro的DBF文件的例子
- 重建、合并、删除索引
- 在Delphi中用ADO连接FoxPro数据库
- Oracle数据库表空间删除与重建
- Java中重载和重写的区别
- 【精华】学习顾问高歌老师给初学者的一些建议
- 几何校正、配准、辐射校正 [转]
- 开发Android第二步,安装 java , apache ant, Eclipse 及在模拟器安装编译程序
- 12个最重要的J2EE最佳实践方法
- Delphi重建与删除Foxpro(DBF)数据库索引文件CDX
- 开发Android第三步,签名证书,真机安装编译程序
- Java基础小结(数值类型转换规则)
- ajax跨域和JS的跨域通信(Cross The Site)的几种解决方案
- [转]Linux 线程实现机制分析
- SQL Server的复合索引学习
- Java常见问题集
- HTTP中 POST 与 GET
- 探讨部署移动CRM前的四项考量