В большинстве случаев достаточно установки Automation Manager на сервере. Однако, если приложение предусматривает наличие «обратной связи» от OLE-сервера, необходима установка Automation Manager и на клиентский компьютер. Обычно запуск Automation Manager происходит автоматически, как только система обнаруживает в этом необходимость. Если этого не произошло, одна из наиболее возможных причин — повреждение или неправильная запись в Регистре Windows.
В случае необходимости непосредственно из 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 FoxPro, который может играть роль сервера данных в небольшой компьютерной сети, там, где не требуется вся мощь таких серверов БД, как SQL Server или Oracle.