|
Вопрос # 1 605/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Подскажите, пожалуйста, как поступить в следующей ситуации: на предприятии есть программный комплекс (состоящий из нескольких частей), написанный на FoxPro 2.5 (для DOS). БД - dbf, индексы - cdx. В настоящее время поставлена задача сделать все на Delphi+MS SQL. Объем работы большой, одновременно все части переделать не получится. Но работоспособность системы в целом необходимо сохранить. Поэтому нужно сделать работу из Delphi с базами FoxPro DOS. Пробовал через BDE - там проблемы с кодовыми страницами. Через ADO (драйвер Microsoft Dbase) все работает замечательно, но только на неиндексированных таблицах. С индексированными таблицами не проходит изменение таблиц. Писать связку на FoxPro не сильно хочется(существенно увеличивает задачу по времени).
С уважением.
 |
Вопрос задал: Мережников Андрей (статус: Абитуриент)
Вопрос отправлен: 21 мая 2008, 17:24
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: ANBsoft
Здравствуйте, Мережников Андрей!
Не знаю поможет ли, но однажды сам столкнулся с проблемой кодировок в DBF под BИВУ.
Опытным путем выяснил, что 30 байт от начала файла в DBF судя по всему отвечает за кодировку.
В моем случае кодировка была виндовая, и туда нужно было прописывать символ "W" (57h).
Поищите или поэкспериментируйте, может поможет.
Успехов!
 |
Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 21 мая 2008, 18:36
Оценка за ответ: 2
Комментарий к оценке: С кодировкой проблему я решил через ADO (об этом написано в вопросе).Но драйвер ODBC для DBase, различная структура индексов (в Fox - cdx,а в DBase - mdx),Поэтому проблема при одновременной работе с индексированными таблицами
|
Ответ #2. Отвечает эксперт: Помфюк Владимир Степанович
Здравствуйте, Мережников Андрей!
попробуйте через TDBF (http://tdbf.sourceforge.net/). В случае чего там есть исходник - можно добавить вызовы OEMtoANSI и ANSItoOEM где надо.
 |
Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 22 мая 2008, 11:10
Оценка за ответ: 3
Комментарий к оценке: Обязательно попробую через tdbf. OemToAnsi и OemToChar я пробовал - результат удивил - нормального преобразования не происходит. И это не решает проблемы с индексами. Видимо придется писать примочку на Fox :-(
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 25 сентября 2008, 22:22; участников в обсуждении: 4.
|
ANBsoft (статус: Студент), 21 мая 2008, 18:38 [#1]:
ВИВУ - имелось в виду BDE .
|
|
ANBsoft (статус: Студент), 22 мая 2008, 08:13 [#2]:
Ну если Вы решили проблему, то чего здесь вопросы задаете?
А если не решили, то почему не хотите попробовать посоветованное?
|
|
Мережников Андрей (статус: Абитуриент), 22 мая 2008, 16:10 [#3]:
Александр Николаевич, проблему я пока не решил, потому и задал вопрос. Изменение значения указанного Вами байта можно сделать проще (открыть таблицу в Visual FoxPro и указать кодовую страницу), но это не решает проблемы с индексными файлами.
|
|
Помфюк Владимир Степанович (статус: Абитуриент), 22 мая 2008, 17:48 [#4]:
что значит "нормального преобразования не происходит"? а какое происходит? что на что меняется?
|
|
Мережников Андрей (статус: Абитуриент), 23 мая 2008, 05:37 [#5]:
Например в таблице dbf (кодировка 866) написано слово "Зарплата". При открытии в Delphi (через BDE, например) на экране абракадабра (что естественно) после применения OemToAnsi получается что-то вроде "За?@аа" (извините,точно не помню. Посмотрю на работе, вечером напишу точнее)
|
|
Anton (w) (статус: Посетитель), 25 сентября 2008, 10:03 [#6]:
А компонент Halcyon пробовали для открытия DBF?
|
|
Мережников Андрей (статус: Абитуриент), 25 сентября 2008, 22:22 [#7]:
нет, такой компонент не пробовал. я решил проблему по другому - на VFP написал утилиту экспорта данных из DBF в MS SQL, а дальше - Delphi+ADO
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|