LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Структура...
 Тема: Структура и чтение dbf файлов
 
 15.06.2007 21:02:13
All
4316 сообщения
1-ый


Тема: Структура и чтение dbf файлов
Статья: Структура и чтение DBF файлов
Пример: http://www.leadersoft.ru/subscribe/zip/la_convert.mdb
DBF файл (dbase) один из самых популярных форматов баз данных. Связано это с тем, что он самый "древний" из баз данных. Первые его версии появились аж в 1983 году. Конечно, за такой длительный срок существования было разработано много разных баз данных, и постоянно встречаются dbf файлы из которых необходимо "вытащить" информацию.
Форматы файлов разделяются на версии II, III, IV и т.п. При этом надо отметить, что "значительных" отличий от версии к версии нет. Таким образом, достаточно изучить методы чтения одного типа файлов и уже далее легко можно доработать программу под другие форматы.
Зачем это нужно. Иногда, работая с базой данных после присоединения таблиц, драйвер возвращает неправильные текстовые данные (нарушена кодировка символов). Возможен вариант, когда Вам необходимо считать memo поля, а Access не позволяет это сделать. Поэтому, чтобы себя свободно чувствовать в этой области, надо изучить и загрузку данных без dbf драйверов.
Вся статья разбита на 3 части, где сначала идет описание dbf файла IV версии, а далее описание dbf функций, а потом их применение в VBA.
Структура файла. 
Каждый файл состоит из трех частей: заголовка, описания записей и собственно данных. Ниже представлено короткое описание каждого из разделов.I. Описание заголовкаСмещение
Длина в байтах
Содержание
01
Номер версии dBase 

Биты 0-2 - dBase версия (03H для версий III и IV)
Бит 3 - индикатор полей памяти
Биты 4-6 - зарезервированы для SQL
Бит 7 - Признак наличия DBT файлов dbase III+1
3
Дата последнего изменения (в формате ГГММДД)4
4
Количество записей в базе данных82
Длина заголовочной записи в байтах102
Длина записи данных в байтах122
 Резервные141
 Признак пересылок151
 Признак кодирования ( 1-данные закодированы)16
12
 Зарезервированы для сетевой версии281
 Признак наличия/отсутствия мультииндексных файлов 01Н - имеется MDX файл, 00H - отсутствует MDX файл293
 Резервные3232*N
 Описание N полей записи данных (по 32 байта на каждое поле)32+32*N+1
1
 Признак конца заголовочной записи (0DH)    
II. Описание полей в Dbase IV (Всего не более 255 полей)СмещениеДлина в байтах
Содержание
011
 Имя поля в ASCII - кодах. Пустые места = 00H11
1
 Тип поля в ASCII - кодах (С, N, F, L, D, M)
C - символьный (ASCII символы)
N - 1 числовой (0...9)
F - 2 числовой (0...9)
L - Логический (YyNnTtFf)
D - Дата (ГГММДД)
M - заметки, номер блока DBT файла124
 Адрес поля в памяти (для внутреннего использования dbase)16
1
 Длина поля в байтах (не более 255 символов)17
1
 Количество знаков после десятичной точки в байтах для числовых полей, иначе 018
2
 Зарезервировано для многопользовательских систем 201
 Идентификатор рабочей области212
 Зарезервировано для многопользовательских систем231
 Используется программой SET FIELDS24
8
 Зарезервировано 
III. Данные в базе данныхСмещение
Длина в байтах
Содержание
01
 Байт, содержащий отметку об удалении записи. Если запись удалена он равен *, иначе " " (blank)1
Сумма длин полей Запись хранится в виде строки ASCII символов без разделяющих знаков 1AH - конец действительной области данныхКомментарии.
Помните, что записи в базе данных не удаляются, а помечаются символом звездочки. Таким образом, даже удалив их они не уничтожаются, а только отмечаются "флажками" как удаленные. Поэтому если Вы желаете, чтобы в базе данных не было лишней информации, ее необходимо сжимать, а еще лучше, создавать новую базу данных и импортировать туда все объекты старой базы. Это будет верно для Access и других профессиональных баз данных.


P.S. Обсуждение разных тем
Автор: Виктор Конюков от 0:00:00 Источник ...
 15.06.2007 21:02:13
КурбацкийАндрей
1 сообщения


RE: Структура и чтение dbf файлов
Вы пишете в Выпуске 36. Структура и чтение DBF файлов
что

>Форматы файлов разделяются на версии II, III, IV и т.п. При этом надо
>отметить, что "значительных" отличий от версии к версии нет. Таким образом,
>достаточно изучить методы чтения одного типа файлов и уже далее легко можно
>доработать программу под другие форматы.

Но в формате dbf под Clipper есть одно сущетсвенное отличие

Длина строкового параметра "C" не 255 а 65535 для этого был использован
не используемый для типов полей "C" 17 байт как старший байт следовательно
описание полей в DBase for Clipper выглядит так

II. Описание полей в Dbase IV (Всего не более 255 полей)
Смещение Длина в Содержание
байтах
0 11 Имя поля в ASCII - кодах. Пустые места = 00H
Тип поля в ASCII - кодах (С, N, F, L, D, M)
C - символьный (ASCII символы)
N - 1 числовой (0...9)
11 1 F - 2 числовой (0...9)
L - Логический (YyNnTtFf)
D - Дата (ГГММДД)
M - заметки, номер блока DBT файла
12 4 Адрес поля в памяти (для внутреннего использования
dbase)
16 1 Длина поля в байтах (не более 255 символов, для
Clipper младший байт символьных полей)
17 1 Количество знаков после десятичной точки в байтах для
числовых полей, иначе 0 (Для Clipper старший байт для
символьных полей)
18 2 Зарезервировано для многопользовательских систем
20 1 Идентификатор рабочей области
21 2 Зарезервировано для многопользовательских систем
23 1 Используется программой SET FIELDS
24 8 Зарезервировано

Следовательно с Clipper базами данных в которых были использованы C поля с
длинной более 255 символов ваша программа будет работать некорректно.


P.S. Обсуждение разных тем
Автор: Курбацкий Андрей от 01.04.2002 13:37:45 Источник ...
 15.06.2007 21:02:13
All
4316 сообщения
1-ый


RE: Структура и чтение dbf файлов
Смотрите на сайте рассылку 36 с дополнительными комментариями и программным кодом Андрея Курбацкого.


P.S. Обсуждение разных тем
Автор: Виктор Конюков от 0:00:00 Источник ...
 15.06.2007 21:02:13
zawal
1 сообщения


RE: Структура и чтение dbf файлов
Я дико извиняюсь но у меня с DBF пролемы. Есть вроде-бы файлик dbf, во всяком случае по описанию подходит, но в первом байте стоит 04h.Этот файлик замечательно открывается и видится в ACCESS и Delphi. Структура файлика (логическая) - одно текстовое и одно числовое поле. С текстовым все нормально, а вот числовое поле непонятное, подозрение что числа хранятся в зашифрованном виде и какой формат этого поля тайна покрытая мраком. И что странно в заголовке этого файла при описании типа поля стоит буква O. Не подскажите как это побороть т.к. набо этот файлик перегнать в клиппер. Или хотя-бы формат хранения таких полей.


P.S. Обсуждение разных тем
Автор: zawal от 29.06.2002 14:33:45 Источник ...
 15.06.2007 21:02:13
рамон
1 сообщения


RE: Структура и чтение dbf файлов
у меня такая проблема, есть база dbf полностью в досе, причем она состоит из нескольких дбф файлов,а в основном файле в полях стоят цифры и для каждого поля своя дбф база которая подставляет свои значения вместо цифр( к примеру в основном поле:"1" в дополнительной базе дбф для этого поля "1=КАНЕВ ЮРЕВИЧ" и при начальной установке она теребует инициализации базы,где создает файлы *.cdx так вот база рабочая сто прцентов,но у меня процес инициализации заканчивается ошибкой,и база не работает,я бы хотел бы чтобы вы мне посоветовали как бы эту базу перевести в нормальный стандарт чтобы ей можно было пользоваться,например в exel и еще один момент эта база пошла всего лищь на двух компьютерах а на остальных по непонятной пречине не хочет причем системы стоят одинаковые,вообще непонятно в чем тут дело.посоветуйте мне как ее можно перевести ,база большая и просто заменить цифры на значения это будет очень,очень долго.
заранее благодарен


P.S. Обсуждение разных тем
Автор: рамон от 13.11.2003 1:05:58 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Структура...
ПоискПоиск  Список форумовСписок форумов  
right