Текущий архив: 2006.07.16;
Скачать: CL | DM;
ВнизODBC драйвер для FoxPro2.6 Найти похожие ветки
← →
kaif © (2006-06-08 22:04) [0]Есть ли волшебный ODBC-драйвер, который мог бы работать с мемо-полями и индексами FP2.6 по-человечески? Если есть, то где его взять?
Помогите, люди добрые, ссылочкой...
Извините, что не в Базах задаю вопрос.
← →
Elen © (2006-06-13 10:12) [1]В свое время столкнулись с проблемой работы с DBF файлами Фокса в Делфи. В Фоксе всех версий часто использовались индексы с выражениями, которые БДЕ просто не понимает. Кроме того, были проблемы и с кодовыми страницами Фокса. Пробовали ODBC, но не понравилось. Долго бились, а затем решили проблему так. В Visual Fox 6...8 создали невизуальный OCX, в который включили методы aFunc и aProc, которые выполняют ЛЮБУЮ команду/функцию Фокса. Затем на клиентской машине устанавливаем Run Time DLL Фокса (регистрируем). В Делфи формируем строку команды/функции Фокса и отправляем на выполнение в OCX. Может, такое решение слишком кардинальное, но решаются ВСЕ проблемы взаимодействия FOX+Delphi. Плюс вся мощь языка Фокса. Интересно узнать, подходит ли такое решение тебе.
← →
kaif © (2006-06-13 16:50) [2]2 Elen © (13.06.06 10:12) [1]
Спасибо за содержательный ответ.
У меня задача попроще - мне нужно всего лишь закачать некоторые данные (индексы меня не волнуют) и обеспечить генерацию парочки таблиц для обмена данными с системой (там тоже индексы не требуются, только поддержка мемо-полей фокса).
В общем мне удалось после продолжительной борьбы выяснить, что именно нужно скачать с Майкрософта, чтобы поставить некривой ODBC драйвер для фокса и OLE DB Provider для работы с ADO.
В общем проблема решилась.
Хотя по ходу выявилась другая проблема - разработчики в исходной базе широко использовали бинарный способ кодирования целых чисел с записью этих последовательностей байт в строковые поля в виде этаких закорюк.
В результате ADO обрезал строки при попытке открыть такие таблицы с помощью ADOTable, так как строки в Delphi (да и вообще в Windows) имеют нулевой терминатор (байт 0), который зачастую встречался в так закодированных данных. Однако удалось найти решение, порывшись в тырнете.
Если использовать в TADOQuery запросы вида:
select cast(<имя поля> as VarBinary(<длина>)) as <псевдоним поля>
from <таблица>
то можно избавиться от эффекта обрезания таких строк и суметь проимпортировать эти закодированные в строках цифры. При этом Delphi создает специальные компоненты полей датасета: TVarBytesField
← →
Elen © (2006-06-15 08:34) [3]Вообще, когда встречаются вопросы по связке Делфи-Фокс, невольно задумываешься: почему нужно программировать именно на Делфи. Если нужно сделать какую-то утилиту, не проще ли использовать именно Фокс. В этом случае, как думается, требуется слепить имеено утилиту для DBF файлов Клиппера (без использования индексов). Достаточно взять любой FoxPro 2x, скопировать файлы (даже не инсталируя!), прописать в Autoexec путь к каталогу Фокса и запускать его из любого каталога. Затем на Фоксе создать программу, используя ВСЮ мощь языка Фокса и запускать ее из bat-файла (например). Понятно, что единственным (наверное) серьезным возражением является незнание языка Фокс. Но имея 15-летний опыт работы, нужно сказать: язык Фокса во многом более естественен, чем многие другие и легче изучается. А возможности Фокса по работе с DBF-файлами (по сравнению с Делфи) просто невообразимо больше (специализация!). Это мое мнение, не более. Интересно и Ваше мнение поэтому вопросу (а вдруг ошибаюсь)
← →
palva © (2006-06-15 08:48) [4]Экзешник сделанный из фокса будет работать на любой машине без фокса, если вместе с ним перенести с установки одну dll размером около полутора мегабайт.
← →
Elen © (2006-06-15 08:53) [5]
>palva
100% согласен. Но для работы утилиты на одной машине не нужно даже EXE-шника. Весь ФоксПро 2х весит что-то около 17 Мб.
Страницы: 1 вся ветка
Текущий архив: 2006.07.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.009 c