У меня есть следующий фрагмент кода 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 () (вторая строка); кажется странно избыточным, что я использую одну и ту же строку для первой и второй строки. Но, может быть, так оно и есть.
Пройдя буквально два или три часа поиска в Интернете, я начинаю думать, что по этому вопросу нет документации, но отказываюсь думать, что никто раньше этого не делал! У кого-нибудь есть опыт с этим?
Заранее спасибо!
Странно, что вы используете ObjectFactory в ProgID для создания COM.
Фабрики объектов в COM имеют конкретное значение и обычно не являются приложениями.
Я нашел вопрос, связанный с Crystal Reports, и там используется строка, которая, как мне кажется, может быть идентификатором приложения. Тебе стоит попробовать это:
Crystal Reports & VBScript — не удалось найти класс автоматизации
Других решений пока нет …