Необходимо создать DLL с помощью Visual Foxpro, чтобы другая программа могла управлять данными в файле DBF.

У нас есть система, которая была построена на Visual Foxpro (VFP6), но она все еще функционирует.

С другой стороны, у нас есть другая система (на VB6), которая обрабатывает повседневные дела, и мы хотим, чтобы эта система могла НЕПОСРЕДСТВЕННО взаимодействовать с программой VFP6 через вызов DLL.

После некоторых исследований мы обнаружили, что можно создать файл DLL из VFP6, и тогда наша система VB6 может использовать вызов DLL для взаимодействия с Visual foxpro DLL (а затем обновлять данные в некоторых файлах DBF).

Нам известна часть вызова DLL из нашей системы VB6, как показано ниже (операция вставки данных):

set newobject=CreateObject(DLLName, ClassName)
action1=newobject.insert(Data1, Data2, Data3)

Но как мы можем создать DLL из VFP6? У кого-нибудь есть опыт, пожалуйста, кинлды поделитесь.


person johnwong    schedule 12.12.2020    source источник
comment
Помимо использования DLL, вы можете напрямую вставить \ обновить \ удалить \ выбрать с помощью ADO или ODBC (таблицы VFP6 имеют поддержку ODBC). ADO и VFPOLEDB были бы лучшим выбором, а также позволили бы вам использовать VFP9-совместимый SQL.   -  person Cetin Basoz    schedule 14.12.2020
comment
@johnwong Я рекомендую вам последовать совету Цетина в комментарии выше. Конечно, должно быть проще читать DBF прямо из VB6 (используя библиотеку ADO), чем создавать DLL в VFP.   -  person MarkJ    schedule 15.12.2020


Ответы (1)


Вы можете выполнить следующие шаги, чтобы создать DLL через VFP6.

В Менеджере проектов, Код ›Программы, создайте программу и поместите следующие коды:

DEFINE CLASS newsdata AS CUSTOM OLEPUBLIC

PROCEDURE Insert
lparameters data1, data2, data3

workfolder=fullpath(curdir())
set defa to (workfolder)

use [dbfname]
[add all other VFP codes here, processing data1, data2, data3....if needed]
ENDPROC

ENDDEFINE

(поместите дополнительные методы в другую ПРОЦЕДУРУ, чтобы ваша вызывающая программа могла их использовать)

После этого, пожалуйста, используйте Build и выберите Build COM DLL.

Затем поместите DLL в папку VB6, и вы можете вызывать эту DLL с помощью таких кодов, как

Set object1 = CreateObject([DLLname].[Classname])
Result = object1.Insert(Data1, Data2, Data3....)
person Ken Lee    schedule 12.12.2020