Приветствую Вас, Гость · RSS Суббота, 21.12.2024, 18:47








Онлайн всего: 4
Гостей: 4
Пользователей: 0
Главная » 2012 » Август » 9 » Delphi + DBF = Русская кодировка
Delphi + DBF = Русская кодировка
15:44
Была поставлена задача - программно подключиться к DBF-файлу в DOS-кодировке, с поддержкой русских символов, при этом не используя сторонних движков (типа BDE) и библиотек.

Будем использовать ADO, драйвер dBASE.

На форму кидаем ADOConnection, adoQuery (для мгновенной проверки можно также DataSource и DBGrid). Соединяем их.

// соберем строку подключения
form1.ADOConnection1.ConnectionString:='Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;DBq=d:\base;Collate=Russian;';

// запрос на выборку всех данных необходимого файла
with form1.adoQuery1 do Begin
     close;
     SQL.Clear;
     SQL.Add('SELECT * FROM test.dbf');
     open;
     end;


Тестировалось на нескольких компьютерах - связь с базой всюду была, русские поля читались.

Примечание:
На машине с установленным БДЕ пришлось в реестре прописать
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase
значение "BDE"=dword:00000002
(если нет, то создать)

Также по этому же пути параметр "DataCodePage" должно иметь значение "OEM". (Ну или ANSI, если у вас база в этом формате).

В принципе эти действия (контроль данных параметров в реестре) можно спокойно добавить в код программы.
Категория: Delphi | Просмотров: 5677 | Добавил: windog | Рейтинг: 5.0/1 |
Всего комментариев: 1
1 windog  
0
Спустя несколько лет снова столкнувшись с подобной проблемой (при конвертации DBF в MS SQL русский "пропадал") нашел в гугле свою статейку и она единственная помогла:)

Только небольшое добавление:
в Windows 7 (и думаю подобных), путь в реестре немного другой:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Xbase

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]