Я хочу интегрировать Crystal Reports 2008 в приложение Windows Forms. Я хотел бы избежать прямых подключений моего клиентского приложения к базе данных, давая пользователю «полный» опыт работы с отчетами. Возможно ли для Crystal Reports 2008 выполнять отчет на сервере в клиентском элементе управления Windows Forms на стороне клиента, подобном службам Microsoft Reporting Services?





На самом деле это не то, о чем вы спрашиваете, но Crystal Reports Server создает отчеты на стороне сервера.
С другой стороны, это раздражающе дорого.
http://www.businessobjects.com/product/catalog/crystalreports_server/
Я не могу добавить комментарий к вышеизложенному, так как у меня нет очков, но надеюсь, что это поможет.
Crystal Reports Server сам запускает отчеты по источникам данных, идея состоит в том, что клиенты без отчетов Crystal или доступа к данным могут запускать отчеты через Интернет, или сервер запускает запланированные отчеты и отправляет результаты. Я не знаю, сможете ли вы его интегрировать.
Я не знаю, это именно то, что вам нужно, но я могу придумать 2 способа, которыми вы могли бы это обмануть:
// Создайте экземпляр во время выполнения, соответствующий вашей среде - только пример:
ReportClass rc = новый ReportClass ();
rc.Load (crystalReportFileName);
rc.SetDataSource (myIEnumerableData);
CrystalReportViewer crv = новый CrystalReportViewer ();
crv.ReportSource = rc;
// Отображение программы просмотра кристаллов.
2 - Вы можете сделать то же самое, что и 1 на сервере (независимо от подхода к базе данных), затем сохранить отчет и отправить его клиенту.
// Некоторая серверная служба / метод и т. д.
публичный байт [] GetMyReport () {
ReportClass rc = новый ReportClass ();
rc.Load (crystalReportFileName);
rc.SetDataSource (myIEnumerableData);
rc.SaveAs (serverSideFile, True); // Истина критична для сохранения данных с отчетом
return .... // конвертируем созданный файл в массив байтов, я полагаю
}
// Сторона клиента
byte [] rep = Сервер. GetMyReport ()
ReportClass rc = ..... // конвертируем rep обратно в кристаллический отчет
CrystalReportViewer crv = новый CrystalReportViewer ();
crv.ReportSource = rc;
Это похоже на то, что мне нужно. Мне нужно будет проверить, не страдает ли пользовательский интерфейс отчета вообще из-за размещения предварительно заполненного отчета вместо его заполнения в пользовательском интерфейсе.
Действительно ли Crystal Reports Server подключается к базам данных для получения данных отчета с сервера? Или он просто предоставляет хостинг для файла .rpt, который обрабатывается на клиенте?