YOUROOT - Программирование - Экспорт в DBF формат


Почему возникло решение и его особенности

В процессе реализации проектов возникала необходимость выгрузки сформированных данных в DBF формат. В частности, такой формат до сих пор используется для передачи в ФОМС. Также его бывает удобно использовать для переноса данных из одной базы в другую, так как выгрузка-загрузка ваполняется быстро.
Выгрузка в DBF формат производилась штатными средствами (ODBC, различные драйверы от Microsoft). Однако такие способы оказались неудобными, трудоемкими и недстаточно надежными.
Файлы DBF - это обычные файлы с регламентированной структурой, поэтому с ними можно работать так же, как и с другими файлами
В C++ был создан класс EAIDBF.
Класс создан на базе стандартного класса TBytesStream. Добавлены методы InsertRecord, UpdateHeader и структуры, описывающие DBF формат.
Потребности в чтении из файла DBF не было, поэтому такого метода у класса EAIDBF нет.

Перед использованием класса EAIDBF нужно подготовить шаблон (файл DBF с заголовком и без записей редактором типа DBFNavigator.exe), который будет загружаться в массив.

Использование класса EAIDBF предполагает следующую последовательность действий:
1) Создание экземпляра объекта: DF = new EAIDBF(DSample), в качестве аргумента использован массив;
2) Подготовка строки в формате SQL для записи: ss = DValues(this);
3) Вставка подготовленной строки в поток: resp = DF->InsertRecord(ss);
4) Обновление DBF заголовка по окончанию процесса вставки записей: resp = DF->UpdateHeader();
5) Сохранение потока в файл DBF: DF->SaveToFile(DirWork + "D" + mo + ".dbf");
6) Удаление экземпляря объекта: delete DF;

Прилагаемые файлы

Прилагается три файла:

  • Заголовочный файл класса EAIDBFUnit.h Загрузить
  • Файл реализации класса EAIDBFUnit.cpp Загрузить
  • Пример использования ExampleDBF.cpp Загрузить
  • Все три файла одним архивом ExportToDbf.zip Загрузить
  • Пример использования сделан из файла рабочего проекта путем удаления не относящихся к теме фрагментов. Компилироваться не будет.