OLE VFP

В случае необходимости непосредственно из Visual FoxPro зарегистрировать Automation Manager можно следующей командой:

RUN /n c:\vfp\autmgr32.exe /regserver

Установки Automation Manager в Регистре Windows имеют следующее располо­жение:

HKEY_LOCAL_MACHINE\Software\Microsoft\Automation Manager/

Remote Automation Connection Manager

Remote Automation Connection Manager (RACMan) написан на Visual Basic 4.0 и поэтому для работы требует наличия библиотеки поддержки Visual Basic. Его ос­новное назначение заключается в управлении записями Регистра Windows, кото­рые включают необходимые сведения для внешнего соединения со стороны кли­ента и доступа клиента на сервере. RACMan требует регистрации сервера на кли­ентском компьютере, поэтому при установке приложения потребуется файл CLIREG32.EXE, который переписывается автоматически, если вы используете Setup Wizard. При запуске программа CLIREG32.EXE требует нескольких пара­метров, в том числе: имя файла с расширением VBR, который генерируется авто­матически при создании OLE-сервера, сетевое имя компьютера, сетевой протокол и параметры доступа пользователя. При этом только первый из указанных пара­метров является обязательным.

Таким образом, RACMan обеспечивает две функции:

· Внешнее соединение на компьютере клиента. Пользователь может изме­нить сервер, который уже зарегистрирован на его компьютере, и зареги­стрировать новый OLE-сервер.

· Доступ клиента к серверу. Сервер может определять возможность доступа клиента как с использованием имени компьютера, так и имени пользовате­ля. При этом для Windows NT обеспечивается интегрированная авториза­ция доступа.

Установки для внешнего OLE-сервера записываются в Регистре Windows для данного сервера с ключом CLSID в HKEY_CLASSES ROOT.

Приведем пример использования OLE-сервера в компьютерной сети для выпол­нения расчетов с данными таблицы, хранящейся на файл-сервере. Выполним пос­ледовательно следующие действия:

1. Для создания OLE-сервера напишем следующую программу:

*1*'Создаем подкласс из базового класса Custom

*!* 'Ключевое слово OLEPUBLIC обязательно

*1* 'Именно оно и позволяет сделать наш объект OLE-объектом

DEFINE CLASS Sum_table AS CUSTOM OLEPUBLIC

* Свойство, которое запоминает значение суммы

Sum_paid = О

* Метод для расчета суммы

PROCEDURE Proc Summary

PARAMETERS What

S3T EXCLUSIVE OFF

SELECT SUM (lnv_details.price*lnv_aetails .quantity) AS sum ;

FROM С :\OFFICE4\DATABASE\ Invoices, ;

C: \OFFICE4\DATABASE\lnv_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

Эта программа будет считать сумму выписанных счетов. В зависимости от значения передаваемого параметра будет считаться сумма по всем счетам или только по оплаченным.

2. В проекте нажмем кнопку Build, щель нем мышкой на зависимом пере­ключателе Build Executable и скомпилируем ЕХЕ-файл OLE-сервера с име­нем Ole_sum. Напомним, что нам требуется именно этот тип сервера, если мы собираемся использовать его в сети.

3. Зарегистрируем созданный сервер на файл-сервере, выполнив следующую команду:

REGSVR32 C:\OFFICE4\OLE_SUM.EXE

4. Запустим Remote Automation Connection Manager, выберем в списке СОМ Classes наш класс и установим требуемые параметры доступа.

He забудьте убедиться, что на вкладке Client Access независимый переклю­чатель Allow Remote Activation включен.

5. Скопируйте файл OLE_SUM.VBR на локальный компьютер.

6. Зарегистрируйте на локальном компьютере OLE-сервер, используя ин­формацию, содержащуюся в файле VBR. Для этого необходимо выполнить следующую команду:

C:\VFP\CLIREG32 С \VFP\OLE_SUM.VBR

На экране появится диалоговое окно, в котором необходимо указать сетевое имя файл-сервера

7. На сервере и локальном компьютере запустите Automation Manager.

8. На локальном компьютере запустите Visual FoxPro и наберите в окне Command следующие команды:

oSum = CREATEOBJECT("ole_sum.sum_table")

oSum.ProcSuitmiary(.T.)

? oSum.Sum_paid

oSum.РrосSummary(.F.)

?oSum.Sum_paid

На экране вы увидите полученный результат.

Широкие возможности использования OLE-сервера Visual FoxPro заключаются в управлении им из любой другой программы, поддерживающей OLE Automation. Например, те же действия мы можем выполнить из Excel, используя следующую процедуру:

Sub mysub()

Dim sum_obj As Object

Set sum_obj = CreateObject("ole_sum.sum_table")

sum_obj.ProcSummary True

Sheets("Лист1").Cells(1,1).Value = sum_obj.Sum_paid

End Sub

Процедура поместит значение суммы в первую ячейку на первый лист Excel. Этот простейший пример наглядно показывает возможности OLE-сервера Visual Fox­Pro, который может играть роль сервера данных в небольшой компьютерной сети, там, где не требуется вся мощь таких серверов БД, как SQL Server или Oracle.


Страница: