LEADERSOFT.ru
Разработка на заказ программ и сайтов
Разработка
Заказ программы
Прайс-лист
Техническое задание
Проектная документация
Наши клиенты
Реклама и продвижение
Магазин
Перейти в магазин
Новинки магазина
Бизнес программы
Финансовый учет
Документооборот
Исходные коды
Интернет решения
Обучение
Перейти в раздел
Форумы по разработке
Примеры на Access
Рассылка статей
Магазин IT литературы
Блог
Все статьи
Microsoft Access (VBA)
Microsoft Access (Проекты)
Microsoft ASP.NET
Сервисы Google
Технические задания
Новости IT технологий
Сервисы
Форумы разработчика
Контакты
О компании
Регистрация на сайте
Подписка на новости по Email
Сообщество Google+
Подписка subscribe.ru
Новости в формате Атом
Загрузить
Загрузить каталог программ
Форумы по информационным технологиям
Начало
Forums
Регистрация
|
Вход
Forums
Обновлено ::
07 февраля 2005
Форумы
Поиск
Список форумов
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: Структура...
Тема: Структура и чтение dbf файлов
15.06.2007 21:02:13
All
4316 сообщения
Тема: Структура и чтение 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 сообщения
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
Источник ...
Страница 1 из 3
1
2
3
Следующий
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: Структура...
Одноуровневый вид
Древовидная структура
Самый старый из новых
Новейший из старых
Поиск
Список форумов
Начало
|
Forums
Copyright 2002-2016 Leadersoft.ru
::
Leadersoft
::
Соглашение о безопасности
::
Условия использования