:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки :: | ||
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
Как восстановить поврежденную таблицу | ||
---|---|---|
Вопрос
Таблица нормально открывалась. Однако после сбоя питания (не корректного выключения компьютера) при открытии таблицы возникает сообщение об ошибке Цитата: Как можно починить таблицу? Причина Файл DBF можно рассматривать как обычный текстовый файл. Просто текст. Но такой текст, который имеет определенную внутреннюю структуру. Т.е. любая информация всегда находится по определенному "адресу". В определенном месте этого файла. Грубо говоря, в файле DBF значение вот этого поля из вот этой строки должно находится вот в этом месте. Что и где должно находится, так сказать, "оглавление", записывается в самом начале файла. В так называемой "заголовочной части". Это просто самое начало файла. После которого идет само содержание файла. Данные. Естественно "оглавление" должно соответствовать определенному "стандарту", зависящему от версии FoxPro, а также должно соответствовать "содержанию". И некоторые из таких соответствий можно проверить. Т.е. посмотреть действительно ли в указанном месте находится соответствующие данные? Что, собственно, и делает FoxPro при открытии файлов DBF. Чем старше версия FoxPro, тем большее количество параметров проверяется при открытии файла DBF. Если какой-то параметр не соответствует тем значениям, которые должны быть, то FoxPro выдает сообщение об ошибке Решение Прежде чем попытаться "исправить" файл DBF, не важно, каким способом, желательно сделать резервную копию. Пусть и поврежденного файла. Как бы "лечение" не сделало хуже! Помните, что таблица - это совокупность трех файлов с одинковым именем и с расширениями DBF - собственно таблица FPT - содержимое мемо-полей CDX - структурный индексный файл Это значит, что делать резервную копию надо всех трех файлов. Разумеется, если они есть. Теоретически, можно самостоятельно проверить соответствие структуры таблицы ее реальному содержанию. В Help по FoxPro достаточно подробно описана структура таблицы и ее заголовочной части. Оглавления. Это статья с названием Table File Structure (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) А для мемо-полей, которые хранятся в отдельном файле с расширением FPT это статья с названием Memo File Structure (.FPT) Для проверки можно открыть таблицу любым низкоуровневым текстовым редактором. Например, Norton Commander, Disco Commander, FAR-manager и т.п. Далее проанализировать значения в заголовочной части и в области с данными. Проблема только в том, что при больших размерах файла такой анализ может занять очень много времени. А ручное исправление ошибок очень утомительный процесс. Тем не менее, просмотреть поврежденный файл в низкоуровневом редакторе бывает полезно. Как правило, при этом можно сделать некоторые общие выводы. Например, а есть ли в файле вообще какая-либо информация. Не заполнен ли файл каким-либо "мусором". Если стоит задача "спасти" информацию текстового содержания из мемо-полей, то ее можно просто скопировать из файла FPT, поскольку она хранится в нем "как есть". Да и информацию из полей таблицы можно прочитать напрямую. Правда, не всегда "как есть". Иногда требуются некоторые преобразования. ------------------------------------------------------------------------------------- Есть некоторые способы, позволяющие в простых случаях "привести в чувство" испорченную таблицу. Если таблицу все-таки удалось открыть, например, отключив проверку структуры настройкой
Или же открыв таблицу в младшей версии Visual FoxPro. То можно попробовать выполнить следующие действия:
Иногда, помогает использование команды PACK. Если повреждения коснулись ссылок на мемо-поля, то иногда помогает создание нового мемо-поля с последующим его удалением. Дело в том, что факт создания нового мемо-поля заново обновляет все ссылки. Хотя, скорее всего, это приведет к потере данных, записанных в мемо-полях. Но их можно будет достать напрямую, открыв файл FPT как текстовый файл. -------------------------------------------------------------------------------- Одна из самых распространенных ошибок - это рассогласование реального количества записей и того значения, которое записано в "оглавлении". Среда FoxPro считает, что в таблице находится столько записей, сколько указано в "оглавлении" этой таблицы. Если в старших версиях FoxPro это рассогласование вызовет сообщение об ошибке в момент открытия, то в младших версиях FoxPro это соответствие не проверяется. Как следствие, при открытии таблицы Вы увидите меньше записей, чем есть на самом деле. Или больше. Но в последнем случае, эти "лишние" записи будут заполнены "мусором". Собственно, довольно просто проверить это соответствие самостоятельно. Достаточно посмотреть, как именно формируется "оглавление" в файле DBF. Т.е. посмотреть в HELP структуру файла DBF. Или поискать в интернете различные "фиксеры", которые исправляют некоторые повреждения структуры файла DBF. Только следует с осторожностью использовать "фиксеры" найденные в интернете. Учитывая тот факт, что есть отличия в структурах файлов DBF для FoxPro 2.x и Visual FoxPro. Отличия в структуре файлов DBF разных версий Visual FoxPro можно считать не существенным с точки зрения исправления возможных повреждений структуры. Впрочем, и большинство "фиксеров" разработанных для FoxPro 2.x могут успешно исправить и повреждение таблиц Visual FoxPro. Еще раз напомню, прежде чем попытаться "исправить" файл DBF при помощи сторонней утилиты, желательно сделать резервную копию. Пусть и поврежденного файла. Как бы "лечение" не сделало хуже! ------------------------------------------------------------------------- Ниже приведен один из вариантов исправления
|
||
Тема | Просмотров | Написано | Написано |
---|---|---|---|
Работа с данными | 6674 | Владимир Максимов | 01.03.05 22:04 |
Выбрать из дочерней таблицы записи с максимальной датой | 22058 | Владимир Максимов | 15.06.05 21:08 |
Выбрать записи с повторяющимися (дублирующими) значениями поля | 13048 | Владимир Максимов | 27.06.05 21:21 |
Как выполнить восстановление поврежденных индексов | 10756 | Владимир Максимов | 29.06.05 21:04 |
Как изменить значения в одной таблице данными из другой | 13384 | Владимир Максимов | 29.06.05 21:40 |
Запрос с GROUP BY выдает сообщение о синтаксической ошибке | 12371 | Владимир Максимов | 20.07.05 17:47 |
При работе в сети иногда не открывается таблица | 5956 | Владимир Максимов | 20.07.05 18:36 |
Как получить программный код создания структуры базы данных | 8396 | Владимир Максимов | 18.09.05 11:14 |
Как восстановить поврежденную таблицу | 21646 | Владимир Максимов | 31.08.08 23:02 |
© 2006 Fox Club  |