Доступа к данным FoxPro FoxPro и без
этот небольшой ВФП dll может помочь довести мощность Рашмор в Non-Рашмор приложений.р><р класса="step_content "><Таблица граница="0" cellspacing="3" cellpadding="3" Ширина="100%"><элемента tbody><тр><тд Ширина="148"><размер шрифта=" 3" Цвет="#000000">в FoxTalkсильные>шрифт>тд><тд выровняйте="право"> <размер шрифта=" 3" Цвет="#000000">в феврале 1999 годасильные>шрифт> тд>тр>элемента tbody>Таблица>р><р класса="step_content ">Авторское право шедевре издание, Инк. Все права защищены.<цвет шрифта="#число FF0000">доступ к БД FoxPro данных без СУБД FoxPro интерфейсныхшрифт><их>сайте<их><шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">
Стив Zimmelmanсильные>шрифт>ем><шрифта лицо="Вердана, Ариал Гельветика" Размер="2">шрифт>р><р класса="step_content "> <шрифта лицо="Вердана, Ариал, Гельветика" Размер="2" Цвет="#число FF0000">бывают случаи, когда для FoxPro доступа к данным необходимо от применения других, чем для FoxPro. Когда это происходит, лучший инструмент для работы еще можно вылечить. Этот небольшой ВФП dll может помочь довести мощность Рашмор в Non-Рашмор приложений.шрифт>р><р класса="step_content "> в прошлом году, я разработал приложение для нашей компании в Delphi 3, что читает таблицы в нашей системе FoxPro с ДОС наследие. Все шло нормально в бета-версии, поэтому мы начали распространять приложения для наших клиентов. Была, правда, одна оплошность: мы никогда не протестировали систему от таблиц, которые были густонаселенные. Когда мы установили приложение на одном из наших крупнейших клиентских сайтов, приложений упал на колени и умер. Проблема: ядро базы данных Borland пытается некоторые сложные запросы, используя локальную базу данных SQL к таблице, которая уже более двух миллионов записей в нем. Наш клиент сообщил нам, что запросы были принимать до 72 часов (да, это ... #39 х часов, а не минуты) для завершения. Это, конечно, было & #39 т приемлемыми, поэтому я начал изучать альтернативные способы выполнения запросов. В результате появился объект для vfp OLE в виде dll, которая выполняет запросы (или почти любой команды FoxPro) в Дельфах (или любая другая 32-разрядная язык) прозрачно и со скоростью Рашмор. С помощью этой технологии, время выполнения запроса сократилось с часов до нескольких секунд.р><р класса="step_content "> код для ВФП Оле dll-это на самом деле очень простой, и он может содержать как одну процедуру или функцию. Я решил написать несколько процедур, которые являются специфическими для приложения, но я также включил некоторые универсальные, которые могут использоваться любым приложением. Для простоты, я ... #39 ве включены только универсальные процедуры и функции в следующем коде:р><р класса="step_content "> <шрифта лицо="курьер Новый, Гельветика" Размер="2" Цвет="#000000">
**************************************
* программы: VFP_OLE.ЭГП и
* визуальный FoxPro 5 Оле ДЛЛ
**************************************
как определить класс VFP_OLE_Server как контейнер OLEPUBLICшрифт>р><р класса="step_content "> процедура инициализации и
* процедура инициализации автоматически
и * выполняется при загрузке библиотеки dll.
В комплект поговорить не
В комплект безопасное отключение
на ошибки не Ole_Err с ошибкой(),Lineno(),
на сообщения () программы()
В набор эксклюзивными
В комплект нуль на
*****************************************<бр / > * - если CPDIALOG на и ДБФ, что был в
* & создается без кодировки открыт, и
* & кодовая страница диалогового окна будет противостоять в
* & пользователь.
*****************************************
В набор CPDIALOG от
*
В комплект перерабатывать в 1 есть
*
В * перейти на FoxPro главное окно выход на
* бит-ведро, так что буду ... #39 T быть видно, если
* он & #39 с видимым.
как переместить окно на экране до -1000,-1000
как изменить экран окно звание "ВФП Оле"
как скрыть окно в
EndProcр><р класса="step_content "> процедура SetDir
В параметр cDir
В набор по умолчанию (м. cDir) и
EndProcр><р класса="step_content "> функция ExeSql
В параметр cSql
частные nRecs,я,то cfile,cFileSrc,cFullPath,
В cDestpath,IsVFPFile,
В cDbfFileName,nHandle
В lIsVFPFile = .Ф.
В cFullPath = набор( & #39 полный путь & #39 )
*
А * Показать главный ВФП окно, что файл
* диалоговое окно будет отображаться как
* если ВФП не может & #39 T найдем файл, который & #39 С и
* необходим для команды SQL.
*
как Показать окно на экране и
*
В * ... выполнить инструкцию SQL & *
*
В cSql = AllTrim(м. cSql)
& cSql
*
как скрыть окно в
*
В nRecs = _Tally
*
В набор пути на
cFileSrc = ДБФ()
как использовать
**************************************
* & проверка TableType.<бр / > * - если Тип является Visual FoxPro и с
* & преобразовать в Fox2x.
**************************************
nHandle = с помощью функции fopen(м. cFileSrc)
если nHandle <> -1
В lIsVFPFile = (чем fgets(м. nHandle,1)=ЧР(48))
В =функции fclose(м. nHandle)
и за endif
на (м.cFileSrc) эксклюзивное
В cDestPath = левый(дбф(),крыса( & #39 \ & #39 ,дбф()))
если м.lIsVFPFile
* & конвертировать результат в Fox2x Формат & *
В то cfile = & #39 Т & #39 право(представление sys(3),7)
и копия (м. cDestPath м.то cfile) Тип Fox2x
как использовать
стереть (м. cFileSrc)
если файл(левую(м. cFileSrc,
Лен(м. cFileSrc)-4) & #39 .ФТП & #39 )
и удалить (слева(м.cFileSrc,
Лен(м. cFileSrc)-4) & #39 .ФТП & #39 )
и за endif
и переименовать (м. cDestPath м.то cfile & #39 .ДБФ & #39 )
К (М.cFileSrc)
если файл(м. cDestPath м.то cfile & #39 .ФПТ & #39 )
и переименовать (м. cDestPath м.то cfile & #39 .ФПТ & #39 )
к (левую(м. cFileSrc,
Лен(м. cFileSrc)-4) & #39 .ФТП & #39 )
что за endif<див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">див> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див>
на (м. cFileSrc) эксклюзивное
и за endif
А * & восстановление пути настройки - *
В комплект полный путь & cFullPathр><р класса="step_content "> ** & вернет количество записей & **
и возврат (м. nRecs)
В EndFuncр><р класса="step_content "> процедура IndexOn
** & создание индекса Теги & *
В параметр cDBF,cKey,гкд,lDeleteTags
на (м. cDBF) скидку в 0 псевдоним IndexDBF
и выберите IndexDBF
если м.lDeleteTags
и удалить тег
все за endif
В индекс & cKey тег & гкд
как использовать
EndProcр><р класса="step_content "> процедура SetPath
В параметр cPath
и укажите путь к (м. cPath)
EndProcр><р класса="step_content "> процедура FoxCommand
В параметр cCMD
& cCMD и
EndProcр><р класса="step_content "> функция FoxFunction
В параметр cFunc
частные Ртн
В Ртн = Ивала(м. cFunc)
и возврат (м. Ростехнадзора)
В EndFuncр><р класса="step_content "> инструкцияр><р класса="step_content "> процедура Ole_Err
** & ручка ДЛЛ внутренние ошибки & **
В параметр нерр,пстрока,cMessage,cPRG
если (м. нерр=1707)
* & ЦДХ нет, Ok, чтобы повторить попытку & *
повторить
и еще
В функции messagebox( м. ЧР cMessage(13) ЧР(13), что
& #39 ошибка# & #39(ул. м. нерр,5) ЧР(13), что
& #39 В строке# & стр #39(м. пстрока,5) ЧР(13), что
& #39 В ... #39 м.cPrg ЧР(13) ЧР(13), что
& #39 см. File:OLE_ERR.TXT для получения подробной информации. & #39
А ,16, & #39 ошибка в VFP_OLE.DLL модуль & #39 )р><р класса="step_content "> *
* & дамп памяти и файла Статус в текстовый файл.
*
как создать OleError курсор (ErrText М(10))
В списке Статус NoConsole в файл OLE_STAT.ТМП
в список памяти как * NoConsole в файл OLE_MEM.ТМПр><р класса="step_content "> Добавить пустой
и заменить ErrText с
повторить( & #39 * & #39 ,80) ЧР(13) ЧР(10)
В DTOC(Дата()) & #39 & #39 раз (а)
в ЧР(13) ЧР(10)
с посредниками в рамках ппрк( & #39 статус & #39 ,80, & #39 * & #39 )
по ЧР(13) ЧР(10)р><р класса="step_content "> Добавить заметку ErrText от OLE_STAT.ТМП
и заменить ErrText с CHR(13) ЧР(10)
с посредниками в рамках ппрк( & #39 память & #39 ,80, & #39 * & #39 )
по ЧР(13) ЧР(10) Аддир><р класса="step_content "> Добавить заметку ErrText от OLE_MEM.ТМП
и заменить ErrText с CHR(13) ЧР(10)
с посредниками в рамках ппрк( & #39 & конец ошибка & & #39 ,80, & #39 * & #39 )
по ЧР(13) ЧР(10) Аддир><р класса="step_content "> если файл( & #39 OLE_ERR.TXT & #39 )
и копией памятки ErrText в OLE_ERR.TXT Адди
и еще
и копию авизо ErrText в OLE_ERR.TXT
что за endifр><р класса="step_content "> стереть OLE_STAT.ТМП
и стереть OLE_MEM.ТМП
*
на следующих данных
* & отменить причины Delphi или VB, чтобы поднять и
* & ошибка.
как скрыть окно в
* & команда Cancel вызывает Делфи и
* - чтобы быть в состоянии поймать ошибку.
Отмена
что за endif
EndProcр><р класса="step_content "> *:ВФ(VFP_OLE.АРГ)р><р класса="step_content "> создание dll является очень простой в vfp. При нажатии на кнопку построить из проекта, там ... #39 с возможностью построить Оле файлов. Просто выберите поставщик OLE dll файлы радио кнопку, затем нажмите кнопку OKр><р класса="step_content "> <шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">
шрифт><шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">шрифт>р><р класса="step_content "> после того, как библиотеки dll, следующий шаг-это зарегистрировать его в Windows. Это легко сделать с помощью REGSVR32.EXE, которая распространяется с Windows 95/98, NT и ВФП. Синтаксис для регистрации библиотеки dll:р><р класса="step_content "> regsvr32 и VFP_OLE.DLLр><р класса="step_content "> <шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">давайте - #39 сек подключайтесьшрифт><шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">
для подключения через ДЛЛ примерно так же легко, как при компиляции. В Делфи можно использовать CreateOleObject() метод, и в VB используется функция createobject(). Потому что у меня закрадывается подозрение, что большинство разработчиков vfp, вероятно, более знакомы с VB, чем Делфи, я использовал только код VB, чтобы продемонстрировать эту технику.
<шрифта лицо="курьер Новый, Гельветика" Размер="2" Цвет="#000000">
частные Command1_Click югу()
& #39 & объявить переменную для хранения ссылки
Дим VFPOLE как объекташрифт>шрифт>р><р класса="step_content "> & #39 & присвоить ссылку на объект в переменной
В набор VFPOLE = функция createobject("VFP_OLE.VFP_OLE_Server")р><р класса="step_content "> VFPOLE.FoxCommand _
В ("ждать окно & #39 выполнение запроса & #39 параметр nowait")р><р класса="step_content "> VFPOLE.FoxCommand ("выбрать * из накладной" & _
В", где (Дата()-InvDate)>=60 " & _
В "В таблице MyInvAge")р><р класса="step_content "> VFPOLE.FoxCommand ("подождите ясно")р><р класса="step_content "> если VFPOLE.FoxFunction ("использовать( & #39 MyInvAge & #39 )") тогда
как сделать
В конце, будто
& #39 & отпустите ссылки
набор VFPOLE = ничего
В конце Суб
Вы можете использовать код, похожий на этот, или, если у вас есть более конкретные потребности, вы можете написать серию PRGs, их скомпилировать в приложение или FXPs, и выполнить их без vfp приложений с использованием FoxCommand метод, как это:
<шрифта лицо="курьер Новый, Гельветика" Размер="2" Цвет="#000000">
В VFPOLE.FoxCommand("сделать Приложение.Приложение") и
шрифт>
с этой dll, у вас есть возможность делать почти все, что вы можете сделать в FoxPro из без vfp приложений. Когда вам нужна сила Рашмор, ничего, бегает как Лиса!
и р><дел стиль= \ ясно:оба поплавка:нет'>дел><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная див>
Доступа к данным FoxPro FoxPro и без
Доступа к данным FoxPro FoxPro и без : Несколько тысяч советов, которые сделают вашу жизнь проще.
этот небольшой ВФП dll может помочь довести мощность Рашмор в Non-Рашмор приложений.р><р класса="step_content "><Таблица граница="0" cellspacing="3" cellpadding="3" Ширина="100%"><элемента tbody><тр><тд Ширина="148"><размер шрифта=" 3" Цвет="#000000">в FoxTalkсильные>шрифт>тд><тд выровняйте="право"> <размер шрифта=" 3" Цвет="#000000">в феврале 1999 годасильные>шрифт> тд>тр>элемента tbody>Таблица>р><р класса="step_content ">Авторское право шедевре издание, Инк. Все права защищены.<цвет шрифта="#число FF0000">доступ к БД FoxPro данных без СУБД FoxPro интерфейсныхшрифт><их>сайте<их><шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">
Стив Zimmelmanсильные>шрифт>ем><шрифта лицо="Вердана, Ариал Гельветика" Размер="2">шрифт>р><р класса="step_content "> <шрифта лицо="Вердана, Ариал, Гельветика" Размер="2" Цвет="#число FF0000">бывают случаи, когда для FoxPro доступа к данным необходимо от применения других, чем для FoxPro. Когда это происходит, лучший инструмент для работы еще можно вылечить. Этот небольшой ВФП dll может помочь довести мощность Рашмор в Non-Рашмор приложений.шрифт>р><р класса="step_content "> в прошлом году, я разработал приложение для нашей компании в Delphi 3, что читает таблицы в нашей системе FoxPro с ДОС наследие. Все шло нормально в бета-версии, поэтому мы начали распространять приложения для наших клиентов. Была, правда, одна оплошность: мы никогда не протестировали систему от таблиц, которые были густонаселенные. Когда мы установили приложение на одном из наших крупнейших клиентских сайтов, приложений упал на колени и умер. Проблема: ядро базы данных Borland пытается некоторые сложные запросы, используя локальную базу данных SQL к таблице, которая уже более двух миллионов записей в нем. Наш клиент сообщил нам, что запросы были принимать до 72 часов (да, это ... #39 х часов, а не минуты) для завершения. Это, конечно, было & #39 т приемлемыми, поэтому я начал изучать альтернативные способы выполнения запросов. В результате появился объект для vfp OLE в виде dll, которая выполняет запросы (или почти любой команды FoxPro) в Дельфах (или любая другая 32-разрядная язык) прозрачно и со скоростью Рашмор. С помощью этой технологии, время выполнения запроса сократилось с часов до нескольких секунд.р><р класса="step_content "> код для ВФП Оле dll-это на самом деле очень простой, и он может содержать как одну процедуру или функцию. Я решил написать несколько процедур, которые являются специфическими для приложения, но я также включил некоторые универсальные, которые могут использоваться любым приложением. Для простоты, я ... #39 ве включены только универсальные процедуры и функции в следующем коде:р><р класса="step_content "> <шрифта лицо="курьер Новый, Гельветика" Размер="2" Цвет="#000000">
**************************************
* программы: VFP_OLE.ЭГП и
* визуальный FoxPro 5 Оле ДЛЛ
**************************************
как определить класс VFP_OLE_Server как контейнер OLEPUBLICшрифт>р><р класса="step_content "> процедура инициализации и
* процедура инициализации автоматически
и * выполняется при загрузке библиотеки dll.
В комплект поговорить не
В комплект безопасное отключение
на ошибки не Ole_Err с ошибкой(),Lineno(),
на сообщения () программы()
В набор эксклюзивными
В комплект нуль на
*****************************************<бр / > * - если CPDIALOG на и ДБФ, что был в
* & создается без кодировки открыт, и
* & кодовая страница диалогового окна будет противостоять в
* & пользователь.
*****************************************
В набор CPDIALOG от
*
В комплект перерабатывать в 1 есть
*
В * перейти на FoxPro главное окно выход на
* бит-ведро, так что буду ... #39 T быть видно, если
* он & #39 с видимым.
как переместить окно на экране до -1000,-1000
как изменить экран окно звание "ВФП Оле"
как скрыть окно в
EndProcр><р класса="step_content "> процедура SetDir
В параметр cDir
В набор по умолчанию (м. cDir) и
EndProcр><р класса="step_content "> функция ExeSql
В параметр cSql
частные nRecs,я,то cfile,cFileSrc,cFullPath,
В cDestpath,IsVFPFile,
В cDbfFileName,nHandle
В lIsVFPFile = .Ф.
В cFullPath = набор( & #39 полный путь & #39 )
*
А * Показать главный ВФП окно, что файл
* диалоговое окно будет отображаться как
* если ВФП не может & #39 T найдем файл, который & #39 С и
* необходим для команды SQL.
*
как Показать окно на экране и
*
В * ... выполнить инструкцию SQL & *
*
В cSql = AllTrim(м. cSql)
& cSql
*
как скрыть окно в
*
В nRecs = _Tally
*
В набор пути на
cFileSrc = ДБФ()
как использовать
**************************************
* & проверка TableType.<бр / > * - если Тип является Visual FoxPro и с
* & преобразовать в Fox2x.
**************************************
nHandle = с помощью функции fopen(м. cFileSrc)
если nHandle <> -1
В lIsVFPFile = (чем fgets(м. nHandle,1)=ЧР(48))
В =функции fclose(м. nHandle)
и за endif
на (м.cFileSrc) эксклюзивное
В cDestPath = левый(дбф(),крыса( & #39 \ & #39 ,дбф()))
если м.lIsVFPFile
* & конвертировать результат в Fox2x Формат & *
В то cfile = & #39 Т & #39 право(представление sys(3),7)
и копия (м. cDestPath м.то cfile) Тип Fox2x
как использовать
стереть (м. cFileSrc)
если файл(левую(м. cFileSrc,
Лен(м. cFileSrc)-4) & #39 .ФТП & #39 )
и удалить (слева(м.cFileSrc,
Лен(м. cFileSrc)-4) & #39 .ФТП & #39 )
и за endif
и переименовать (м. cDestPath м.то cfile & #39 .ДБФ & #39 )
К (М.cFileSrc)
если файл(м. cDestPath м.то cfile & #39 .ФПТ & #39 )
и переименовать (м. cDestPath м.то cfile & #39 .ФПТ & #39 )
к (левую(м. cFileSrc,
Лен(м. cFileSrc)-4) & #39 .ФТП & #39 )
что за endif<див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">див> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див>
на (м. cFileSrc) эксклюзивное
и за endif
А * & восстановление пути настройки - *
В комплект полный путь & cFullPathр><р класса="step_content "> ** & вернет количество записей & **
и возврат (м. nRecs)
В EndFuncр><р класса="step_content "> процедура IndexOn
** & создание индекса Теги & *
В параметр cDBF,cKey,гкд,lDeleteTags
на (м. cDBF) скидку в 0 псевдоним IndexDBF
и выберите IndexDBF
если м.lDeleteTags
и удалить тег
все за endif
В индекс & cKey тег & гкд
как использовать
EndProcр><р класса="step_content "> процедура SetPath
В параметр cPath
и укажите путь к (м. cPath)
EndProcр><р класса="step_content "> процедура FoxCommand
В параметр cCMD
& cCMD и
EndProcр><р класса="step_content "> функция FoxFunction
В параметр cFunc
частные Ртн
В Ртн = Ивала(м. cFunc)
и возврат (м. Ростехнадзора)
В EndFuncр><р класса="step_content "> инструкцияр><р класса="step_content "> процедура Ole_Err
** & ручка ДЛЛ внутренние ошибки & **
В параметр нерр,пстрока,cMessage,cPRG
если (м. нерр=1707)
* & ЦДХ нет, Ok, чтобы повторить попытку & *
повторить
и еще
В функции messagebox( м. ЧР cMessage(13) ЧР(13), что
& #39 ошибка# & #39(ул. м. нерр,5) ЧР(13), что
& #39 В строке# & стр #39(м. пстрока,5) ЧР(13), что
& #39 В ... #39 м.cPrg ЧР(13) ЧР(13), что
& #39 см. File:OLE_ERR.TXT для получения подробной информации. & #39
А ,16, & #39 ошибка в VFP_OLE.DLL модуль & #39 )р><р класса="step_content "> *
* & дамп памяти и файла Статус в текстовый файл.
*
как создать OleError курсор (ErrText М(10))
В списке Статус NoConsole в файл OLE_STAT.ТМП
в список памяти как * NoConsole в файл OLE_MEM.ТМПр><р класса="step_content "> Добавить пустой
и заменить ErrText с
повторить( & #39 * & #39 ,80) ЧР(13) ЧР(10)
В DTOC(Дата()) & #39 & #39 раз (а)
в ЧР(13) ЧР(10)
с посредниками в рамках ппрк( & #39 статус & #39 ,80, & #39 * & #39 )
по ЧР(13) ЧР(10)р><р класса="step_content "> Добавить заметку ErrText от OLE_STAT.ТМП
и заменить ErrText с CHR(13) ЧР(10)
с посредниками в рамках ппрк( & #39 память & #39 ,80, & #39 * & #39 )
по ЧР(13) ЧР(10) Аддир><р класса="step_content "> Добавить заметку ErrText от OLE_MEM.ТМП
и заменить ErrText с CHR(13) ЧР(10)
с посредниками в рамках ппрк( & #39 & конец ошибка & & #39 ,80, & #39 * & #39 )
по ЧР(13) ЧР(10) Аддир><р класса="step_content "> если файл( & #39 OLE_ERR.TXT & #39 )
и копией памятки ErrText в OLE_ERR.TXT Адди
и еще
и копию авизо ErrText в OLE_ERR.TXT
что за endifр><р класса="step_content "> стереть OLE_STAT.ТМП
и стереть OLE_MEM.ТМП
*
на следующих данных
* & отменить причины Delphi или VB, чтобы поднять и
* & ошибка.
как скрыть окно в
* & команда Cancel вызывает Делфи и
* - чтобы быть в состоянии поймать ошибку.
Отмена
что за endif
EndProcр><р класса="step_content "> *:ВФ(VFP_OLE.АРГ)р><р класса="step_content "> создание dll является очень простой в vfp. При нажатии на кнопку построить из проекта, там ... #39 с возможностью построить Оле файлов. Просто выберите поставщик OLE dll файлы радио кнопку, затем нажмите кнопку OKр><р класса="step_content "> <шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">
шрифт><шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">шрифт>р><р класса="step_content "> после того, как библиотеки dll, следующий шаг-это зарегистрировать его в Windows. Это легко сделать с помощью REGSVR32.EXE, которая распространяется с Windows 95/98, NT и ВФП. Синтаксис для регистрации библиотеки dll:р><р класса="step_content "> regsvr32 и VFP_OLE.DLLр><р класса="step_content "> <шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">давайте - #39 сек подключайтесьшрифт><шрифта лицо="Вердана, Ариал, Гельветика" Размер="2">
для подключения через ДЛЛ примерно так же легко, как при компиляции. В Делфи можно использовать CreateOleObject() метод, и в VB используется функция createobject(). Потому что у меня закрадывается подозрение, что большинство разработчиков vfp, вероятно, более знакомы с VB, чем Делфи, я использовал только код VB, чтобы продемонстрировать эту технику.
<шрифта лицо="курьер Новый, Гельветика" Размер="2" Цвет="#000000">
частные Command1_Click югу()
& #39 & объявить переменную для хранения ссылки
Дим VFPOLE как объекташрифт>шрифт>р><р класса="step_content "> & #39 & присвоить ссылку на объект в переменной
В набор VFPOLE = функция createobject("VFP_OLE.VFP_OLE_Server")р><р класса="step_content "> VFPOLE.FoxCommand _
В ("ждать окно & #39 выполнение запроса & #39 параметр nowait")р><р класса="step_content "> VFPOLE.FoxCommand ("выбрать * из накладной" & _
В", где (Дата()-InvDate)>=60 " & _
В "В таблице MyInvAge")р><р класса="step_content "> VFPOLE.FoxCommand ("подождите ясно")р><р класса="step_content "> если VFPOLE.FoxFunction ("использовать( & #39 MyInvAge & #39 )") тогда
как сделать
В конце, будто
& #39 & отпустите ссылки
набор VFPOLE = ничего
В конце Суб
Вы можете использовать код, похожий на этот, или, если у вас есть более конкретные потребности, вы можете написать серию PRGs, их скомпилировать в приложение или FXPs, и выполнить их без vfp приложений с использованием FoxCommand метод, как это:
<шрифта лицо="курьер Новый, Гельветика" Размер="2" Цвет="#000000">
В VFPOLE.FoxCommand("сделать Приложение.Приложение") и
шрифт>
с этой dll, у вас есть возможность делать почти все, что вы можете сделать в FoxPro из без vfp приложений. Когда вам нужна сила Рашмор, ничего, бегает как Лиса!
и р><дел стиль= \ ясно:оба поплавка:нет'>дел><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная див>
Доступа к данным FoxPro FoxPro и без
By russiatips
Доступа к данным FoxPro FoxPro и без : Несколько тысяч советов, которые сделают вашу жизнь проще.