Использование объектов PHP и COM для доступа к Crystal Reports XI (версия 14.0.4.738 RTM)

У меня есть следующий фрагмент кода PHP, написанный при попытке использовать COM для доступа к Crystal Reports XI (версия 14.0.4.738 RTM):

$ObjectFactory = new COM("CrystalReports14.ObjectFactory.1") or die("CR loading failed");
$crapp = $ObjectFactory->CreateObject("CrystalReports14.ObjectFactory.1");
$creport = $crapp->OpenReport($rptFile, 1);
...

Первые две строки кажутся нормальными на поверхности. Третья строка выдает ошибку, однако:

Fatal error: Call to undefined method variant::OpenReport() in ...

Я не уверен на 100%, что правильно выполнил вызов CreateObject () (вторая строка); кажется странно избыточным, что я использую одну и ту же строку для первой и второй строки. Но, может быть, так оно и есть.

Пройдя буквально два или три часа поиска в Интернете, я начинаю думать, что по этому вопросу нет документации, но отказываюсь думать, что никто раньше этого не делал! У кого-нибудь есть опыт с этим?

Заранее спасибо!

1

Решение

Странно, что вы используете ObjectFactory в ProgID для создания COM.
Фабрики объектов в COM имеют конкретное значение и обычно не являются приложениями.

Я нашел вопрос, связанный с Crystal Reports, и там используется строка, которая, как мне кажется, может быть идентификатором приложения. Тебе стоит попробовать это:
Crystal Reports & VBScript — не удалось найти класс автоматизации

0

Другие решения

Других решений пока нет …