Показать сообщение отдельно
Старый 30.08.2005, 10:43     # 1696
content
Newbie
 
Регистрация: 16.02.2005
Сообщения: 32

content Известность не заставит себя ждать
Цитата:
Сообщение от B0B
Я тоже за ..
Пусть поделится советами...
Ну если публика просит:
1. Открываем файл в far-е по F3. Переходим в режим Hex(F4). Сразу замечаем, что в заголовке, начиная с h8B (где-то после слова sp12268) возникает смещение на два байта. Там же содержится непонятная кракозябра, которой быть не должно.
2. Открываем файл тем же far-ом по F4, находим это место и стираем два байта (включая кракозябру). Сохраняем. Заголовок починили. Теперь файл открывается просмотрщиком dbf (я лично пользую старый добрый нортоновский dbview из комплекта NC).
3. При просмотре dbview замечаем непорядок в данных. Примерно зная, как устроены 1с-овские дбф-ы (читая dd), понимаем, что в первой записи не хватает двух байт в поле sp10986. Запоминаем характерную последовательность символов 1 0 0 0 1 H, перед которой эти два байта (два пробела - поле текстовое) надо вставить. Открываем по F4, вставляем два пробела в указанном месте. Сохраняем. Файл здоров.
4. Для очистки совести сравниваем структуру полей с заявленной в dd и размер файла с количеством записей.
Как видим технология рабоче-крестьянская, инструменты примитивные, работы на 10 минут (писал дольше). Единственное, что требуется - уметь читать dd и знать устройство dbf (про это в инете полно).
Ошибка типичная. Как правило при сбое такого рода определенный фрагмент dbf-а смещается на несколько байт в ту или другую сторону. Поскольку структура dbf-а довольно рыхлая, а многие поля избыточны или могут быть восстановлены по косвенным признакам, потери данных обычно удается избежать.
Попутно желаю вам, естественно, чтобы мои советы не пригодились .
ЗЫ: Забыл добавить: если файл большой, место поломки в нем ищем тестированиеи и исправлением ИБ, которое честно пишет номер записи, с которой начинается непорядок.

Последний раз редактировалось content; 30.08.2005 в 10:51.
content вне форума