Міністерство освіти і освіти України p>
Волгоградський державний технічний університет p>
Кафедра «САПР і ПК» p>
семестрова робота тема: p> < p> «Visual FoxPro 5.0 як OLE-cервер» p>
Виконав: студенти групи АС-563 p>
Маштаков О.М. p>
Перевірив: p>
Волгоград 1999р. p>
Зміст: p>
1. Visual FoxPro як OLE-сервер 2 p>
2. Створення OLE-сервера в Visual FoxPro 7 p>
3. OLE-сервер в комп'ютерній мережі 11 p>
4. Automation Manager 14 p>
5. Remote Automation Connection Manager 15
Visual FoxPro як OLE-сервер p>
Починаючи з п'ятої версії, Visual FoxPro може виконувати функції OLE -сервера. OLE-сервер - це програма, яка може надати своїоб'єкти для управління іншій програмі, що підтримує OLE Automation. p>
Ця нова можливість істотно розширює можливості використання
Visual FoxPro, тому зупинимося трохи докладніше на тому, що ж таке OLE -сервер. p>
Більшість OLE-серверів є так званими серверами Out-of-
Process. Вони являють собою виконуються програми (файли зрозширенням ЕХЕ) і можуть взаємодіяти як з 16-bit, так і з 32-bit OLE -контролерами. Розплатою за це є невисока швидкість обміну данимита спожиті значні ресурси пам'яті. Інший тип OLE-сервераназивається In-Process і представляє з себе DLL-бібліотеку, якадинамічно підвантажується і вивантажується в залежності від необхідності.
Гарним прикладом такого сервера є процесор баз даних СУБД Access
7.0. Обмін даними з цим типом OLE-сервера відбувається значно швидше,але працювати він може тільки з OLE-контролером такий же розрядності. p>
У Visual FoxPro доступ до об'єктів виконується, як і в переважнійбільшості інших OLE-серверів, за допомогою об'єкта верхнього рівня
Application. У табл. 1 перераховані його властивості, а в табл. 2 - методи. P>
Властивості Об'єкту Application p>
Таблиця 1.
| Властивість | Параметри та опис |
| ActiveForm.Property | Property - властивість форми. |
| [= Setting] | Setting - значення властивості. |
| ActiveForm.Method | Method - метод форми. |
| | Забезпечує посилання на активну форму або |
| | Об'єкт SCREEN |
| AutoYield [= IExpr] | IExpr за замовчуванням дорівнює. Т., що |
| | Передбачає пріоритет подій Windows. |
| | Значення. F. запобігає переривання |
| | Виконання коду Visual FoxPro. При цьому |
| | Події Windows ставляться в чергу. |
| | Визначає спосіб обробки подій Windows. |
| Caption [= cText] | cText - текст заголовка. |
| | Визначає заголовок вікна програми. |
| DefaultFilePath [= сPath] | сPath - позначення пристрою каталогу чи |
| | Шлях. |
| | Визначає каталог за замовчуванням для |
| | Програми. |
| | Визначає шлях і ім'я файлу для запуску копії |
| | Visual FoxPro. |
| Height [= nHeight] | nHeight - висота вікна програми. Визначає |
| | Висоту вікна програми. |
| Let [= nDist] | nDist - відстань від лівого краю. |
| | Визначає розташування вікна програми |
| | Відносно лівого краю. |
| Name [= cName] | cName - ім'я об'єкта. |
| | Визначає ім'я об'єкта для посилання в коді |
| | Програми. |
| OLERequestPendingTimeOut | Nmilliseconds - величина затримки в |
| [= Nmilliseconds] | мілісекундах, що за умовчанням дорівнює |
| | 5000 мс. Якщо параметр дорівнює 0, то повідомлення |
| | Не з'являється. |
| | Визначає затримку, яка відбувається перед |
| | Появою повідомлення про те, що система |
| | Зайнята в процесі виконання запиту OLE |
| | Automation, якщо користувач використовує |
| | Клавіатуру або мишу. |
| OLEServerRaiseError | lExpression за замовчуванням дорівнює. F. - |
| [= LExpression] | повідомлення про помилку буде з'являтися. Якщо |
| | Параметр дорівнює. Т., повідомлення буде. |
| | Визначає поява повідомлення про помилку, |
| | Коли закінчується час, встановлений в |
| | Властивості OLEServerBusyTimeout. |
| OLEServerBusyTimeout | nMilliseconds - величина затримки в |
| [= Nmilliseconds] | мілісекундах до появи повідомлення про те, |
| | Що сервер зайнятий. |
| | Визначає час, протягом якого |
| | Відбувається повторне виконання запиту OLE |
| | Automation, якщо сервер зайнятий. |
| StartMode | Повертає число, ідентифікує тип |
| | Запускається програми. |
| StatusBar [= cMessageText] | cMessageText - рядок повідомлення. Визначає |
| | Текст у статус - рядку програми. |
| Top [= nDist] | nDist - відстань від верхнього краю. |
| | Визначає розташування вікна програми |
| | Щодо верхнього краю. |
| Version | Повертає у вигляді рядка символів номер |
| | Версії запускається програми. |
| Visible [= lExpr] | lExpr за замовчуванням дорівнює. F., тобто |
| | Запускається копія додатку невидима. Якщо |
| | Параметр lExpr дорівнює. Т. - Додаток |
| | Стає видимим. |
| | Визначає, чи буде запускається копія |
| | Програми видима. |
| Width [= nWidth] | nWidth - ширина вікна програми. Визначає |
| | Меж вікна програми. | p>
Методи Об'єкту Application p>
Таблиця 1.
| Метод | Параметри та опис |
| DataToClip ([nWorkArea | nWorkArea, cTabieAlias - робоча область або |
| | CTableAlias] [, nRecords] | псевдонім джерела даних. |
| [, NClipFormat]) | nRecords - число копійованих записів. |
| | UClipFormat за замовчуванням дорівнює 1, при цьому |
| | Дані полів розділяються пробілами. Якщо |
| | Параметр дорівнює 3, дані розділяються знаком |
| | Табуляції. |
| | Копіює записи в буфер обміну у вигляді |
| | Тексту, в якому кожен запис займає |
| | Окремий рядок. |
| DoCmd (cCommand) | cCommand - вираз, що представляє команду |
| | VFP. |
| | Дозволяє виконати команду Visual FoxPro з |
| | Програми є OLE-контролером. |
| Eval (cExpression) | cExpression - вираз, який необхідно |
| | Конвертувати. |
| | Перетворює вираження і повертає його в |
| | Visual FoxPro. |
| Help ([cFileName] | cFileName - ім'я та шлях до файлу оперативної |
| [, NContexId] [, cHelpTopic]) | допомоги. NContextID - ідентифікатор розділу. |
| | CHelpTopic - тема розділу. |
| | Відкриває вікно з контекстної підказки. |
| Quit () | Закриває запущену копію програми Visual |
| | FoxPro. |
| RequestData ([nWorkArea | | nWorkArea, cTableAlias - робоча область або |
| cTableAlias] [, nRecords]) | псевдонім джерела даних. nRecords - число |
| | Копійованих записів. |
| | Створює масив з даними з джерела даних |
| | Visual FoxPro. | p>
Для посилання на об'єкт Application можна використовувати системнузмінну _VFP. p>
Visual FoxPro 5.0 має наступні колекції, які асоціюються зоб'єктом Application: p>
. Forms - форми; p>
. Objects - об'єкти; p>
. Controls - елементи управління; p>
. Pages - сторінки; p>
. Buttons - кнопки; p>
. Columns - колонки. P>
При цьому зверніть увагу, що ці колекції є колекціямивиключно OLE-об'єктів і можуть використовуватися тільки з об'єктом
Application. До цих колекцій не можна звертатися, використовуючи асоційованізмінні з включеними в них об'єктами. Ви повинні використовувати властивість
Application, як це показано нижче: oFrm = CREATEOBJECT ( 'Form') p>
? oFrm.Application.Forms [1]. Controls.Count p>
Якщо ви вже писали програми в Visual FoxPro 3.0, то наведене вищетвердження може викликати деякий подив. Перераховані колекцій булипредставлені і в третій версії, це дійсно так. Але, так як Visual
FoxPro 3.0 не міг виконувати функції OLE-сервера, то ці колекції невідповідали загальноприйнятим стандартам OLE. В першу чергу за рахунок того, що їхвластивості були доступні для зміни. Це зручно, якщо ми працюємо з однимдодатком. Як і раніше, нам ніхто не заважає продовжувати використовувати ціможливості. Але, як тільки ми починаємо використовувати програму як OLE -сервер, тобто звертаємося до нього з іншої програми, то повиннівикористовувати об'єкти Visual FoxPro як OLE-колекції. p>
Наприклад, ніщо не заважає нам при створенні форми в Visual FoxProнаписати такий код: p>
Frm = CREATEOBJECT ( 'Form') p>
? oFrm.ControlCount & & Число елементів керування у формі p>
Для OLE-сервера число елементів керування у формі слід визначатитак, як це було показано в попередньому прикладі, з використанням властивості
Count. P>
Створення OLE-сервера в Visual FoxPro p>
Використовуючи Visual FoxPro 5.0, можна створити OLE-сервер,функціональність якого буде використана декількома додатками. p>
Для створення OLE-сервера використовувані в ньому класи повинні бути описаніяк OLE Public, тобто доступні для OLE Automation. Для цього в команду
DEFINE CLASS включена нова опція OLEPUBLIC. Якщо клас створюється в
Конструкторі класів, необхідно використовувати відповідний незалежнийперемикати в діалоговому вікні Class Info. Відмітка класу як OLE Publicдозволяє Project Manager при побудові програми створювати іреєструвати даний клас як ОLЕ-серверу, до якого повинен отриматидоступ OLE-контролер. p>
У Visual FoxPro ви можете створити як In-Process сервер (DLL), так і
Out-of-Process сервер (ЕХЕ). Обидва типи сервера при роботі використовуютьбібліотеку підтримки додатків Visual FoxPro (runtime), проте істотновідлилися у використанні пам'яті. p>
Сервер ЕХЕ запускається у власному адресному просторі, і в цьомуплані його запуск нічим не відрізняється від запуску копії Visual FoxPro. p>
Сервер DLL використовує адресний простір того додатка, щоініціювало його запуск. Тому він запускається і працює швидше.
Природно прагнення використовувати в першу чергу саме такий типсервера, однак не завжди ми можемо так вчинити. Сервер DLL не можевикористовуватися як зовнішній сервер OLE Automation і, таким чином, маєзнаходитися на локальному комп'ютері. Він не підтримує події, тобто неможе використовуватися для інтерактивної роботи. Слід також враховувати, щоаварія сервера DLL, як правило, тягне за собою аварію керуючої програми. p>
Сервер ЕХЕ має ще одну перевагу. Він може виконувати роль OLE -сервера і звичайного програми Visual FoxPro. Таким чином, якщо додаток -контролер використовує сервер для виконання процесу, який може бутивельми ресурсоємних, але виконується локально на цьому сервері, ми отримаємовиграш в продуктивності. p>
Покажемо простий приклад створення OLE-сервера Visual FoxPro. Створимоновий проект Ole_serv, в якому буде один програмний файл з наступнимкодом: p>
DEFINE CLASS OLE_SERV AS CUSTOM OLEPUBLIC p>
PROCEDURE INIT p>
MESSAGEBOX (PROGRAM (), "ПРАЦЮЄ МІЙ ПЕРШИЙ OLE-SERVER") p>
ENDDEFINE p>
Натиснемо кнопку Build і створимо EXE-або DLL-файл. Якщо ви уважностежили за повідомленнями з'являються в процесі побудови файлу, тонапевно помітили повідомлення «Creating Type Library and Registering OLE
Server », що свідчить про створення та реєстрації нашої програмияк OLE-сервера. Нагадаємо, що це сталося через наявність опції OLEPUBLICв команді опису класу. p>
При побудові OLE-сервера (OLE_SER.EXE або OLE_SER.DLL) створюютьсяфайли OLE_SERV.TLB і OLE_SERV.VBR. p>
Файл TLB - це бібліотека OLE-o6'ектов серверу, яка може бутипереглянута за допомогою Visual FoxPro Class Browser, Excel, Visual Basic і
Visual C. Файл VBR - це текстовий файл з даними для запису в Реєстрі
Windows. P>
Тепер можна набрати в командному вікні наступну рядок: oObj = CREATEOBJECT ( "OLE_SERV.OLE_SERV") p>
Після нетривалого очікування, потрібної для завантаження серверави побачите вікно з заголовком «Працює мій перший OLE-сервер!» і повідомленнямз ім'ям що виконується в даний момент процедури - Init. p>
Хоча наш OLE-сервер не виконує ніякої корисної роботи,свідченням його активності можуть служити наступні cтрочкі: p>
? oObj.Application.Name p>
? oObj.Application.Visible p>
? TYPE ( "oObj") p>
? oObj.Application.Docmd ( "MESSACEBOX (HOME ())") p>
? oObj.Application.Docmd ( "_ClipText = HOME () + SYS (2003) + SYS (2004 )") p>
Зверніть увагу на останній рядок прикладу. Вона записує в буферобміну шлях до OLE-сервера з допомогою трьох функцій. Наприклад, це може бутирядок: DWORKSVFP5_SAMPLE. У нашому прикладі вона буде повторена три рази.
Це свідчить про те, що OLE починає пошук сервера з каталогу SYSТЕМ
ОС Windows. P>
Таким чином, при поширенні програми та установці сервера нарізних комп'ютерах в різних каталогах, ми можемо зіткнутися зпроблемою вказівки шляху як до сервера, так і використовуваним їм компонентів
(файлів бази даних, форм, звітів і т. д.). Найкраще рішення - цевикористання для сервера ЕХЕ-функції Windows API GetModuleFileName (),яка повертає повний шлях до головного файлу ЕХЕ поточного процесу, якщояк перший параметр передається нуль. Для сервера DLL можнавикористовувати функцію GetModuleHandleQ з ім'ям файлу DLL якпараметра для повернення вказівника на сервер. Цей покажчик можнавикористовувати в функції GetModuleFileName () для отримання повного шляху досерверу DLL. p>
Зробимо ще кілька зауважень щодо побудови OLE-сервера.
Виберіть команду Project Info з меню Project, коли відкрито останнійобговорюваний проект, і в діалоговому вікні перейдіть на вкладку
Servers. На цій вкладці зосереджена інформація, яку ви можетепереглянути або змінити для кожного класу OLE Public у проекті. ЗвернітьЗауважте, що ця інформація з'являється тільки після того, як будепобудований EXE-або DLL-файл. p>
Розкривний список Instancing дозволяє вказати, як буде працюватисервер Out-of-Process. Можливі установки наведено в табл. 3. P>
Можливі режими роботи OLE-сервера Visual FoxPro p>
Таблиця 3.
| Single Use | Кожен клієнт використовує свою власну копію сервера. |
| | Таким чином для декількох користувачів буде запущено |
| | Відповідні кількість копій сервера. |
| Multiple Use | Всі клієнти використовують одну копію сервера. Для того, щоб |
| | Уникнути їх взаємного впливу при роботі з загальними даними, |
| | Слід встановити значення властивості DataSession рівним 2 |
| | (Private). |
| Not Creatable | Запобігає створення OLE-сервера, незважаючи на наявність у |
| | Проект класу OLE Public. | p>
OLE-сервер Visual FoxPro реєструється автоматично. Для ручногореєстрації сервера ЕХЕ досить його запустити з опцією/regserver. Опція
/ unregserver дозволяє видалити інформацію про сервер з Реєстру Windows.
Для реєстрації сервера DLL вручну запустіть утиліту REGSVR32.EXE з ім'ямфайлу як перший параметр. Видалити інформацію про сервер з
Регістру можна, використавши другий параметр/u. Наприклад: p>
REGSVR32 OLE_SERV.DLL/u p>
OLE-сервер Visual FoxPro для своєї роботи вимагає присутностібібліотеки підтримки - файлів VFP500.DLL і VFP5ENU.DLL. p>
OLE-сервер в комп'ютерній мережі p>
При колективне роботі з даними OLE-сервер повинен оброблятивиклики всіх користувачів комп'ютерної мережі, а отже, повинензнаходитися на сервері, а не на кожному комп'ютери користувача. Такий підхіддозволяє організувати трирівневу модель обробки даних. Ця модельвідрізняється від традиційної моделі клієнт-сервер, оскільки відображає не простофізична взаємне - розташування користувача і програми, а логікуобробки даних. У трирівневої моделі виділяють наступні логічніпроцеси:
Користувацький процес - представляє можливість роботи з данимикористувачеві програми, забезпечує захист даних від несанкціонованогодоступу.
Бізнес-процес - забезпечує єдині правила роботи з даними з точкизору технології виробничого процесу, генерує інформаційнупідтримку маркетингу та менеджменту.
Процес обробки даних - забезпечує опис та зберігання данихобробку і виконання запитів, підтримку цілісності даних. p>
Таким чином, у цій логічної моделі бізнес-процес може бутиревізував на основі OLE-сервера, в якому за допомогою відповіднихметодів буде організована обробка даних, що посилаються від клієнтськихпрограм з метою виконання комплексних розрахунків на основі різнихджерел, і вироблення будь-яких рішень для подальшої обробки. p>
Можливість взаємодії між OLE-контролером і OLE-серверомзабезпечується двома об'єктами:
Proxy - забезпечує формування пакета даних з параметрами виклику для
OLE-сервера. Цей об'єкт працює в адресному просторі OLE-контролера ізабезпечує з'єднання з відповідним об'єктом Stub в адресномупросторі OLE-сервера.
Stub - приймає пакет даних і забезпечує переадресацію дзвінка длявиконання відповідних дій на OLE-сервер. Цей об'єкт працює вадресному просторі OLE-сервера і пов'язаний з відповідним об'єктом Proxyв адресному просторі OLE-контролера. p>
При роботі OLE Automation на одному комп'ютері функціонуванняоб'єктів Proxy і Stub забезпечується системним файлом OLEAUT32.DLL p>
Якщо OLE-контролер і OLE-сервер розташовані на різних комп'ютерах,для забезпечення зв'язку між ними необхідно використовувати додатковийкомпонент, який називається Automation Manager (файл AUTMGR32.EXE). Цейкомпонент повинен бути встановлений на обох комп'ютерах. p>
OLE-контролер продовжує використовувати об'єкт Proxy, але в цьому випадкуйого функціонування забезпечується файлом AUTPRX32.DLL. На комп'ютері ззовнішнім OLE-сервером Automation Manager управляє як об'єктом Stub дляодержання пакетів даних від OLE-контролера, так і об'єктом Proxy дляімітації наявності OLE-контролера на цьому комп'ютері. Таким чином для OLE -cepвера створюються всі умови, щоб він не відчував «самотності» відвідсутності OLE-контролера на тому ж самому комп'ютері, p>
Сервер OLE Visual FoxPro 5.0 підтримує зворотні зв'язки. Ви можетевикористовувати метод на сервер, який буде отримувати посилання на об'єкт від
OLE-контролера як один з параметрів. Ця можливість дозволяєвстановлювати асинхронну зв'язок з сервером, якщо цей зв'язок не може бутивстановлена негайно через виконання сервером якогось тривалогопроцесу. p>
У цьому випадку на сервері, який буде, наприклад, називатися
Processor (в Реєстр Windows - MyServer.Processor) повинен бути описанийк?? ас: p>
DEFINE CLASS Processor AS Custom OLEPUBLIC oObjRef = "" p>
PROCEDURE SetupRef (oRef) p>
This.oObjRef = oRef p>
ENDPROC p>
PROCEDURE DoCallBack p>
This.oObjRef.Notify () p>
ENDPROC p>
ENDDEFINE p>
У клієнтському додатку запишемо: oObjl = CREATEOBJECT ( "Job") o0bj2 - CREATEOBJECT ( "MyServer. Processor") o0bj2. SetUpRef (oObjl) p>
DEFINE CLASS Job AS Custom p>
PROCEDURE Notify p>
= MESSAGEBOX ( "Завдання виконано !") p>
ENDPROC
ENDDEFINE p>
Як тільки на сервері викликається метод DoCallBack, слід виконанняметоду Notify об'єкта клієнтського додатку. p>
Якщо зв'язок з OLE-сервером відбувається по комп'ютерній мережі то накомп'ютері клієнтського застосування повинен бути встановлю Automation Manager. p>
Спочатку Automation Manager і Remote Automation Manager булирозроблені для Visual Basic 4.0 і в подальшому використані в Visual
FoxPro 5.0 для розширення функціональності в області розробки великихпроектів при колективній роботі з даними. p>
Automation Manager p>
Automation Manager працює у фоновому режимі, тому що його основнапризначення полягає в управлінні процесом OLE Automation в мережішляхом зовнішніх процедурних дзвінків. Як зазначалося вище, ці викликиформуються за рахунок взаємодії між об'єктами OLE Proxy і OLE Stub.
Без них ви не зможете створити зовнішній OLE-сервер. P>
Automation Manager встановлюється на сервері і розподіляє виклики відоб'єкта Proxy робочої станції до відповідного об'єкту Stub сервера.
Повертаються значення Automation Manager направляє OLE-контролера черезоб'єкт Stub. За Рахунок цього ні OLE-контролер, ні OLE-сервер не відчувають,що розташовані на різних комп'ютерах. p>
У більшості випадків достатньо установки Automation Manager насервер. Однак, якщо програма передбачає наявність «зворотного зв'язку»від OLE-сервера, необхідне встановлення Automation Manager і на клієнтськийкомп'ютер. Зазвичай запуск Automation Manager відбувається автоматично, яктільки система виявляє в цьому необхідність. Якщо цього не сталося,один з найбільш можливих причин - пошкодження або неправильна запис у
Регістрі Windows. P>
У разі потреби безпосередньо з Visual FoxProзареєструвати Automation Manager можна наступною командою: p>
RUN/nc: vfpautmgr32.exe/regserver p>
Установки Automation Manager в Реєстрі Windows мають такерозміщення: p>
HKEY_LOCAL_MACHINESoftwareMicrosoftAutomation Manager/ p>
Remote Automation Connection Manager p>
Remote Automation Connection Manager (RACMan) написаний на Visual Basic
4.0 і тому для роботи вимагає наявності бібліотеки підтримки Visual Basic.
Його основне призначення полягає в управлінні записами Реєстру Windows,які містять необхідні відомості для зовнішнього з'єднання з бокуклієнта і доступу клієнта на сервер. RACMan вимагає реєстрації сервера наклієнтському комп'ютері, тому при установці програми буде потрібно файл
CLIREG32.EXE, який листується автоматично, якщо ви використовуєте
Setup Wizard. При запуску програма CLIREG32.EXE вимагає декількохпараметрів, в тому числі: ім'я файлу з розширенням VBR, який генеруєтьсяавтоматично при створенні OLE-сервера, мережне ім'я комп'ютера, мережевийпротокол та параметри доступу користувача. При цьому тільки перший ззазначених параметрів є обов'язковим. p>
Таким чином, RACMan забезпечує дві функції:
Зовнішнє підключення на комп'ютері клієнта. Користувач може змінитисервер, який вже зареєстрований на його комп'ютері, і зареєструватиновий OLE-сервер.
Доступ клієнта до сервера. Сервер може визначати можливість доступуклієнта як з використанням імені комп'ютера, так і імені користувача.
При цьому для Windows NT забезпечується інтегрована авторизація доступу. P>
Установки для зовнішнього OLE-сервера записуються в Реєстрі для Windowsданого сервера з ключем CLSID в HKEY_CLASSES__ROOT. p>
Наведемо приклад використання OLE-сервера в комп'ютерній мережі длявиконання розрахунків з даними таблиці, що зберігається на файл-сервер. Виконаємопослідовно наступні дії: p>
1. Для створення OLE-сервера напишемо наступну програму:
* 1 * 'Створюємо підклас з базового класу Custom
*! * 'Ключове слово OLEPUBLIC обов'язково p>
* 1 *' Саме воно і дозволяє зробити наш об'єкт OLE-об'єктом
DEFINE CLASS Sum_table AS CUSTOM OLEPUBLIC
* Властивість, що запам'ятовує значення суми
Sum_paid = О
* Метод для розрахунку суми p>
PROCEDURE Proc Summary
PARAMETERS What
S3T EXCLUSIVE OFF p>
SELECT SUM (lnv_details.price * lnv_aetails. Quantity) AS sum;
FROM С: OFFICE4DATABASE Invoices,; p>
C: OFFICE4DATABASElnv_details;
WHERE Invoices. Kod_id = lnv_deta-ils.kod_id;
AND Invoices. Paid = What;
INTO CURSOR cur_sum
** "* Повертає значення
SELECT cur_sum
THIS. Sum_paid = cur_sum. Sum
USE IN cur_sum
END PROC
ENDDEFINE p>
Ця програма буде вважати суму виписаних рахунків. Залежно відзначення переданого параметра буде вважатися сума по всіх рахунках аботільки сплачених. p>
2. У проекті натиснемо кнопку Build, щілину ньому мишкою на залежному перемикачі Build Executable і скомпіліруем ЕХЕ-файл OLE-сервера з ім'ям Ole_sum. Нагадаємо, що нам потрібно саме цей тип сервера, якщо ми збираємося використовувати його в мережі. P>
3. Зареєструємо створений сервер на файл-сервер, виконавши наступну команду: p>
REGSVR32 C: OFFICE4OLE_SUM.EXE p>
4. Запустимо Remote Automation Connection Manager, виберемо в списку СОМ
Classes наш клас і встановимо необхідні параметри доступу. P>
He забудьте переконатися, що на вкладці Client Access незалежнийперемикач Allow Remote Activation включений. p>
5. Скопіюйте файл OLE_SUM.VBR на локальний комп'ютер. P>
6. Зареєструйте на локальному комп'ютері OLE-сервер, використовуючиінформацію, що міститься у файлі VBR. Для цього необхідно виконатинаступну команду: p>
C: VFPCLIREG32 З VFPOLE_SUM.VBR p>
На екрані з'явиться діалогове вікно, в якому необхідно вказатимережеве ім'я файлу-сервера p>
7. На сервері та локальному комп'ютері запустіть Automation Manager. P>
8. На локальному комп'ютері запустіть Visual FoxPro і наберіть у вікні
Command наступні команди: oSum = CREATEOBJECT ( "ole_sum.sum_table") oSum.ProcSuitmiary (. T.) p>
? oSum.Sum_paid oSum.РrосSummary (. F.) p>
? oSum.Sum_paid p>
На екрані ви побачите отриманий результат. p>
Широкі можливості використання OLE-сервера Visual FoxProполягають в управлінні ним з будь-якої іншої програми, що підтримує OLE
Automation. Наприклад, ті ж дії ми можемо виконати з Excel, використовуючинаступну процедуру: p>
Sub mysub () p>
Dim sum_obj As Object p>
Set sum_obj = CreateObject ( "ole_sum.sum_table") sum_obj.ProcSummary True p >
Sheets ( "Лист1"). Cells (1,1). Value = sum_obj.Sum_paid p>
End Sub p>
Процедура помістить значення суми в першу клітинку на перший лист < br>Excel. Цей простий приклад наочно показує можливості OLE-сервера
Visual FoxPro, що має підтримку функції сервера даних в невеликійкомп'ютерної мережі, там, де не потрібно вся міць таких серверів БД, як
SQL Server або Oracle. P>