-
Nick6 (21.12.06 13:05) [0]Всем привет!
Кто-нибудь пробовал создавать отчёты в Excel через XLReport на удалённом компьютере? Там проблема в том, что при подключении XLReport к созданному удалённо (через DCOM или Borland Socket) процессу выдаётся ошибка "Интерфейс не поддерживается"
var Excel: Variant;
DCOMConnection.Connected:=true;
Excel:=DCOMConnection.AppServer;
XLReport.ConnectToExcelApplication(Excel); //ошибка
А вобще все методы Excel доступны:
Excel.Visible:=true;
Excel.WorkBooks.Add; и т.д. //работает
Может кто-то знает из-за чего конкретно XLReport ругается. (Исходников компонента нету). Можно как-нибудь обойти проблему? -
а что это за штука - XLReport?
-
isasa © (21.12.06 16:43) [2]Выбирай.
1. На удаленной машине нет Excel
2. На удаленной машине не настроены разрешения на DCOM
3. Нет контроллера домена в сети.
Для таких финтов, в принципе, XLReport пятое колесо. :)
Проверить можно обычным *.vbs скриптом
Dim XLApp
Set XLApp = CreateObject("Excel.Application", <имя машины/IP машины>)
WScript.Echo XLApp.Version
Set XLApp = Nothing -
2 isasa © (21.12.06 16:43) [2]
но ведь OLE оъект доступен, вроде бы, судя по
> А вобще все методы Excel доступны:
похоже, что репорту нужно раннее связывание. -
isasa © (21.12.06 21:09) [4]umbra © (21.12.06 17:26) [3]
похоже, что репорту нужно раннее связывание.
Тогда в
XLReport.ConnectToExcelApplication(Excel); //ошибка
надо передавать не Variant, а интерфейс из
Excel_TLB.pas, а вообще ...
ошибка в 17 строке ... -
Nick6 (22.12.06 10:59) [5]Немного дополню...
DCOM настроен правильно, поскольку приложение Excel на удалённом компьютере полностью доступно для управления. Работаешь с ним так же как если бы Excel был загружен на локальной машине. Метод XLReport.ConnectToExcelApplication должен просто присваивать компоненту ссылку на COM интерфейс (уже запущенный процесс Excel). Но ему что-то не нравится.
Кстати если TDCOMConnection подцепить к своему же компьютеру, то всё работает нормально. Всё же хотелось бы узнать, что за ограничение есть при работе с удалённым компом. Придётся видимо спросить у создателей компонента.