Skip to content

Программа для обработки DBF. Написана на C# для legacy решения. Немного WinForms и Visual FoxPro OleDb.

Notifications You must be signed in to change notification settings

valerymamontov/EditDBF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Предыстория

В 2019 году изменились требования по СНИЛС и потребовалось немного изменить одно "legacy"-решение.
Оно представляло из себя исполнямый файл (exe) и запускалось под Windows Server 2003 (x86).
Открывало DBF-файл, извлекало из него четыре столбца и сохраняло их в новом файле.
Требовалось написать похожую программу, чтобы не травмировать мозг пользователей.

Немного кода на C#

На C# написал новый обработчик с использованием VFPOLEDB-драйвера для работы с DBF-файлами.
Потребовалось на сервере (WIN2003) установить компонент Microsoft OLE DB Provider for Visual FoxPro 9.0. Без него DBF-файл не обрабатывался, появлялась ошибка, что "Поставщик VFPOLEDB.1 не зарегистрирован на локальном компьютере". Ссылка на компонент (поставщик) - https://www.microsoft.com/en-us/download/details.aspx?id=14839
Image alt

Файлы:

В проекте есть папка с названием "exe", в ней лежат:
VFPOLEDBSetup.msi - это VFPOLEDB-драйвер;
EditDBF.exe - это обработчик (итоговый файл).

Механизм работы

  1. Программа открывает DBF-файл, переносит из него все строки в Dataset.
  2. Редактирует (чуть иначе) данные и записывает их в новый Dataset.
  3. Сохраняет нужные данные в новый файл.

Почему VFPOLEDB или проблемы с ODBC и OLEDB

Сначала для обработки DBF-файла я использовал ODBC и OLEDB, но столкнулся с несколькими проблемами.
Если путь к исходному файлу содержал пробелы, то при открытии DBF появлялась ошибка.
Если длина имени DBF-файла содержала более восьми символов, тоже появлялась ошибка.
Чтобы обойти эти ошибки, приходилось копировать DBF-файл в директорию без пробелов и обрезать имя файла.
И в итоге я решил остановиться на VFPOLEDB.

Полезные ссылки

  1. Если имя таблицы содержит более восьми символов, то возникает ошибка
  2. В конце таблицы создаётся пустая колонка "_NullFlags"

About

Программа для обработки DBF. Написана на C# для legacy решения. Немного WinForms и Visual FoxPro OleDb.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages