首页 >> 读书频道 >> 电脑 >> 怎样解决打开一个DBF表时的"Index not found.."的错误
 
· 取余运算符 (%)
· 取余赋值运算符 (%=)
· Delphi使用技巧四则
· 逻辑“非”运算符 (!)
· Delphi使用技巧AB
· 逻辑“与”运算符 (&&
· 左移赋值运算符 (<
· 用Delphi 设 计
· instanceof 运
· 递增 (++) 和递减
· Delphi如何实现在一
· in 运算符
 
· 红楼梦:120回全本[清
· 常见图像文件格式详解
· 拉封丹寓言
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

怎样解决打开一个DBF表时的"Index not found.."的错误


查看有无更新版本

关键字:Delphi/Pascal 2006-9-22

 

当 你 创 建 一 个 DBF 表 时 , 如 果 使 用 了 MDX 格 式 的 索 引 文 件 , 那 么 DBF 表 的 表 头 中 的 某 个 字 节 就 自 动 被 设 置 了 一 个 标 志 , 当 你 下 次 试 图 重 新 打 开 这 个 DBF 表 的 时 候 , 数 据 引 擎 会 自 动 识 别 这 个 标 志 , 如 果 此 标 志 为 真 , 则 数 据 引 擎 将 试 图 打 开 相 应 的 MDX 文 件 , 当 相 应 的 MDX 文 件 不 存 在 时 , 错 误 就 产 生 了 。 知 道 了 问 题 产 生 的 原 因 , 解 决 方 案 也 就 有 了 : 我 们 只 需 将 那 个 标 志 字 节 ( 其 实 就 是 第 28 个 字 节 ) 设 为 零 就 行 了 。 下 面 为 示 范 代 码 :
unit Fixit;interfaceuses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;type TForm1 = class(TForm) Table1: TTable; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}const TheTableDir = 'c:\temp\'; TheTableName = 'animals.dbf';procedure RemoveMDXByte(dbFile: String);{ 这 个 procedure 的 参 数 是 一 个 文 件 名 , 它 将 对 这 个 文 件 的 文 件 头 }{ 进 行 处 理 , 以 确 保 它 不 在 需 要 MDX }const Value: Byte = 0;var F: File of byte;begin AssignFile(F, dbFile); Reset(F); Seek(F, 28); Write(F, Value); CloseFile(F);end;procedure TForm1.Button1Click(Sender: TObject);{ 此 procedure 将 试 图 打 开 一 个 表 , 如 果 相 应 的 .MDX 文 件 不 存 在 }{ 将 对 表 文 件 进 行 处 理 并 尝 试 再 次 打 开 }begin try { 为 表 设 置 路 径 } Table1.DatabaseName := TheTableDir; { 设 置 表 的 名 字 } Table1.TableName := TheTableName; { 尝 试 打 开 表 } Table1.Open; except on E:EDBEngineError do { 如 果 MDX 文 件 未 发 现 , 将 返 回 以 下 错 误 信 息 } if Pos('Index does not exist. File', E.Message)>0 then begin { 询 问 用 户 是 否 继 续 } MessageDlg('MDX file not found. Attempting to open without index.', mtWarning, [mbOk], 0); { 从 表 头 中 移 去 相 应 标 志 } RemoveMDXByte(TheTableDir + TheTableName); { 再 次 向 Button1 发 送 被 按 下 的 消 息 , 本 procedure 再 次 被 执 行 } PostMessage(Button1.Handle, cn_Command, bn_Clicked, 0); end; end;end;end.

怎样解决打开一个DBF表时的"Index not found.."的错误

[ 1 ]
怎样解决打开一个DBF表时的"Index not found.."的错误 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑