Была поставлена задача - программно подключиться к DBF-файлу в DOS-кодировке, с поддержкой русских символов, при этом не используя сторонних движков (типа BDE) и библиотек.
Будем использовать ADO, драйвер dBASE.
На форму кидаем ADOConnection, adoQuery (для мгновенной проверки можно также DataSource и DBGrid). Соединяем их.
// запрос на выборку всех данных необходимого файла 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, если у вас база в этом формате).
В принципе эти действия (контроль данных параметров в реестре) можно спокойно добавить в код программы.
Спустя несколько лет снова столкнувшись с подобной проблемой (при конвертации DBF в MS SQL русский "пропадал") нашел в гугле свою статейку и она единственная помогла:)
Только небольшое добавление: в Windows 7 (и думаю подобных), путь в реестре немного другой: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Xbase
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]