Database 版 (精华区)
发信人: mengy (LEAR DLLS 命令时,将从内存中清除), 信区: Database
标 题: 如 何 修 复 被 破 坏 的Foxpro 数 据 库
发信站: 哈工大紫丁香 (2000年12月13日09:12:19 星期三), 站内信件
如 何 修 复 被 破 坏 的Foxpro 数 据 库
山 东 省 青 岛 啤 酒 集 团 有 限 公 司
葛 现 宗
---- 目 前 在 我 国, 有 相 当 一 部 分 正 在 运 行 应 用 程 序 是 用
Foxpro 编 写 的, 由 于 突 然 断 电、 程 序 非 法 关 闭 等 原 因, 经 常
会 导 致Foxpro 数 据 库.DBF 文 件 被 破 坏, 如 果 数 据 库 被 破 坏 了
, 用Foxpro 打 开 数 据 库.DBF 时, 会 出 现"not a table/dbf" 错 误 提
示, 导 致 无 法 用Foxpro 打 开。
---- 首 先 介 绍 一 下Foxpro 数 据 库.DBF 的 文 件 结 构:
---- Foxpro 数 据 库*.DBF 的 文 件 结 构 由 头 记 录 和 数 据 记 录 组
成, 头 记 录 定 义 该DBF 的 结 构 并 包 含 与 该 库 相 关 的 其 它 信
息。 头 记 录 由 文 件 位 置0 字 节 开 始。
---- 数 据 库 头 部 几 个 关 键 字 节 含 义 如 下: ( 注: 库 文 件 中
存 储 整 数 时 低 位 字 节 在 前)
---- 字 节 偏 移 说 明
0 库文件的版本类型
1-3 最近更新的日期(YYMMDD)
4-7 库文件中记录的个数
8-9 第一条记录的起始位置
10-11 一条记录的长度(包括删除标记)
---- 其 它 字 节 的 具 体 描 述 不 在 此 赘 述, 可 以 参 考 有 关 部 门
书 籍 或 者 程 序 开 头 注 释 部 分。
---- 在 实 际 工 作 中 发 现, 许 多 情 况 下 数 据 库 错 误 都 是 由 于
记 录 个 数 比 实 际 记 录 个 数 大1 个, 以 至 于 数 据 库 无 法 用 打
开。
---- 主 要 通 过 以 下 两 种 办 法 来 对 数 据 库 进 行 修 复。
一、 用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 即 可。
添 加 索 引 文 件 后 退 出 数 据 库 结 构 设 置, 并 对 数 据 库 重 新
索 引 一 下, 就 可 以 继 续 使 用 原 来 被 破 坏 的 数 据 库 了。
--
大海无边天做岸
山登绝顶我为风
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.679毫秒