Вопрос

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

Это было полезно?

Решение

Я не знаю, действительно ли это именно то, что вам нужно, но я могу придумать два способа, которыми вы можете это подделать:

  1. Вы можете настроить свой отчет так, чтобы «база данных» представляла собой файл XSD, без знания реального бэкэнда.Затем во время выполнения вы отправляете данные в отчет.

// Создайте экземпляр во время выполнения, соответствующий вашей среде — только пример:

ReportClass rc = новый ReportClass();

rc.Load(crystalReportFileName);

rc.SetDataSource(myIEnumerableData);

CrystalReportViewer crv = новый CrystalReportViewer();

crv.ReportSource = rc;

// Отображение средства просмотра кристаллов.

2. Вы можете сделать то же самое, что и 1, на сервере (независимо от подхода к базе данных), затем сохранить отчет и отправить его клиенту.

// Некоторые серверные службы/методы и т. д.

public byte [] getmyreport () {

ReportClass rc = новый ReportClass();

rc.Load(crystalReportFileName);

rc.SetDataSource(myIEnumerableData);

rc.SaveAs(serverSideFile, True);// True имеет решающее значение для сохранения данных в отчете

возвращаться ....// конвертируем созданный файл в массив байтов, я полагаю

}

// Сторона клиента

byte[] повтор = Server.ПолучитьМойОтчет()

Класс отчета rc = .....// конвертируем отчет обратно в кристаллический отчет

CrystalReportViewer crv = новый CrystalReportViewer();

crv.ReportSource = rc;

scroll top