Всем доброго времени суток, дорогие читатели блога. В сегодняшней статье я расскажу про доступ к DBF-файлам (таблицам) различными способами. Я столкнулся с такой проблемой, когда мне необходимо было осуществить доступ к DBF-таблицам FoxPro. Пробовал через BDE, не получалось, только к таблицам Paradox (dbf), в итоге решил попробовать через компонент TDBF –также обернулась неудачей. По старинке решил попробовать подключиться через ADO и все пошло как по маслу.
Поэтому, в данной статье я расскажу, как можно подключиться к таблицам DBF тремя способами:
- С помощью BDE – для таблиц FoxPro у меня данный вариант не прошел
- С помощью ADO – отлично открылись таблицы FoxPro
- С помощью компонента TDBF – хорошо открывает таблицы Paradox с различными кодировками или же dBase.
Если честно, то я вообще не могу терпеть BDE, но пришлось поработать с такими таблицами и первый вариант, через который я хотел подключиться к ним – это использование именно BDE, что, в принципе у меня это получилось, то есть получилось забрать список таблиц, чему я обрадовался и подумал, что дальше все пойдет, как положено, но не тут-то было. При попытке подключение к какой-нибудь таблице, мне выдавало ошибку, что-то наподобие:
LANGDRIVE not found
Я пробовал его устанавливать и в самое BDE Administrator и при подключении, но ничего не вышло. Зато таким способам у меня отлично подключалось к таблицам DBF – Paradox, например dBase.
Поэтому, устанавливаем на форму следующие компоненты со вкладки BDE:
- TDataBase
- TTable или TQuery
- По желанию можно TDataSourceи TDbGrid
Далее в свойстве DatabaseName компонента TDataBase задаем имя БД, я написал – MyDB,а в свойстве DriverName того же компонента я выбрал из выпадающего списка STANDART. Свойство LoginPromt устанавливаем в False, так как логина и пароля на наших таблицах никакого не стоит. В свойстве Params задаем параметры подключения, я указал только путь к нашим таблицам:
Можно также двойным щелчком нажать по компоненту TDataBase и настроить необходимое подключение и устанавливаем свойство Connected в True, в итоге должно произойти подключение к таблицам, без всяких ошибок. Здесь все, переходим к компоненту TTable, где в свойстве DatabaseName указываем имя нашей БД, то есть MyDB. В свойстве TableType выбираем тип таблиц, я указал – ttDBase, а в свойстве TableName выбираем имя таблицы, после чего устанавливаем свойство Active в True. Все, подключает у меня отлично, таблицу отображает также отлично.
Но такой вариант у меня не прошел с таблицами FoxPro, о чем я говорил выше. Поэтому, чтобы решить свою проблему, я решил использовать технологию ADO. Поэтому с вкладки ADO я установил следующие компоненты:
- TADOConnection
- TADOQuery или TADOTable
- По желанию можно установить TDataSource и TDBGrid
Далее нам необходимо просто создать подключение, которое мы делали для базы MS Access, оно будет отличаться тем, что мы выбираем другого поставщика данных, а именно Microsoft Visual FoxPro ODBC. Все, далее указываем кодировку и путь к таблицам. Если это таблицы FoxPro, то в папки должен присутствовать файл со списком всех таблиц, расширения *.dbc. То есть, строка подключения компонента TADOCOnnection будет выглядеть, примерно следующим образом:
ADOConnection1.ConnectionString:='Provider=VFPOLEDB.1;Data Source=C:\1\222\BKOSHELEVO\pddata\G2013\m01;Password="";Collating Sequence=RUSSIAN';
Связываем компонент TADOConnection с TADOTable или TADOQuery и работает с нужными нам таблицами.
Еще один вариант – это работа с таблицами dbf-формата, с помощью компонента TDBF, который, я использую в проекте MapWindow GIS. Если честно, я хочу от него отказаться, просто он хорошо работает с кодировками. Рассказывать, как с ним работать, я не буду, а просто оставлю ссылку для примера. Пример работы компонента TDBF.
Заключение
Как видите, работать с DBF-таблицами очень легко, главное выбрать нужный вариант (подход) к ним и все у Вас будет замечательно. Наверное, я изложил самые простые варианты работы с ними, Вам остается выбрать лишь подходящий для Вас.