Существуют ли какие-либо новые опции ODBC для Foxpro?
-
10-07-2019 - |
Вопрос
Обычно мы используем MS Visual Foxpro версии 9.0 SP1, язык, таблицы и отчеты.Однако иногда мы используем драйвер ODBC для подключения к таблицам.Драйвер ODBC был написан для Foxpro версии 6 и не поддерживает определенные вложенные выборки, поля автоинкремента или встроенные приведения.
Мы хотели бы найти альтернативу тому, что у нас есть.Это может быть другой драйвер ODBC, который работает с Visaul Foxpro v9, или полная альтернатива ODBC.Существует ли такая вещь?
Спасибо.
Решение
(Поговорим о повторном использовании, просто ответил на это сегодня в другой теме)
Если вы ищете драйвер ODBC для баз данных и таблиц VFP, вы могли бы рассмотреть возможность использования базы данных Advantage от iAnywhere.У них есть локальный движок и серверный движок.Локальный движок имеет движок для доступа к данным DBF, но в вашем случае у него также есть ODBC-накопитель, который работает с данными VFP вплоть до текущей версии Visual FoxPro 9 включительно.Локальный движок и прилагаемый драйвер ODBC бесплатны.
Другие советы
Вы можете использовать COM + и делать практически все в VFP, однако у вас возникают проблемы с безопасностью через инструменты администрирования, службы компонентов..
Вы можете создавать как однопоточную, так и многопоточную библиотеку DLL.
После регистрации, когда в typelibrary будет указано "Добавить ссылку" на C # (или другое) приложение, вы сможете выполнять вызовы функций с любыми необходимыми вам параметрами.Есть много вещей, которые вы можете вернуть обратно, но обычно таблицы я отправляю обратно в виде XML (через класс Foxpro XmlAdapter), затем потоковое преобразование в таблицу один раз в C #.Прошло некоторое время с тех пор, как я работал таким образом, но это дает огромную гибкость, поскольку вы можете выполнять свои запросы, циклы сканирования и другое сложное условное тестирование и обновление курсора, прежде чем генерировать XML и возвращать его в виде строки.
DEFINE CLASS YourClass as CUSTOM OLEPUBLIC
FUNCTION GetMyData( lcSomeString as String)
select * from (YourPath + "SomeTable" ) where ... into cursor C_SomeCursor readwrite
.. any other manipulation, testing, etc...
oXML = CREATEOBJECT( "xmladapter" )
lcXML = ""
oXML.AddTableSchema( "C_SomeCursor" )
oXML.ToXML( "lcXML", "", .f. )
return lcXML
ENDFUNC
ENDDEFINE