Как использовать Crystal Reports без тесного соединения с БД?

Я учусь использовать Crystal Reports (с VB 2005).

Большая часть того, что я видел до сих пор, заключается в том, чтобы отбирать данные непосредственно из базы данных, и это хорошо, если это все, что вы хотите отобразить в отчете.

В моей БД много внешних ключей, поэтому я старался не выходить за рамки представления реальной информации в моем приложении, чтобы добавить в мои объекты дополнительные элементы, содержащие строки (описания) того, что представляют собой внешние ключи. Подобно:

Class AssetIdentifier

    Private ID_AssetIdentifier As Integer
    Private AssetID As Integer
    Private IdentifierTypeID As Integer
    Private IdentifierType As String
    Private IdentifierText As String

    ...

Здесь IdentifierTypeID является внешним ключом, и я ищу значение в другой таблице и помещаю его в IdentifierType. Таким образом, у меня есть текстовое описание прямо в объекте, и я могу носить его с другими вещами.

Итак, к моему вопросу Crystal Reports.

Похоже, что Crystal Reports упрощает подключение к записям в конкретной таблице (особенно с экспертами), но это все, что вы получаете.

В идеале я хотел бы составить список своих занятий, например:

Dim assetIdentifiers as New List(Of AssetIdentifier)

и передать его в Crystal Report вместо создания жесткой ссылки на конкретную БД, сделайте большую часть работы за меня, но предоставьте мне возможность обойти ту часть, которую он не выполняет. На данный момент наиболее близким является набор данных ADO.NET, но даже он кажется далеко удаленным. Я уже хорошо обрабатываю запросы: у меня есть все виды функций, которые возвращают List (Of Wh независимо) на основе запросов.

Есть простой способ сделать это?

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

UPDATE:  ОК, я нашел кое-что здесь:

http://msdn.microsoft.com/en-us/library/ms227595(VS.80).aspx

но это только дает эту возможность для веб-проектов или веб-приложений. Мне не повезло, если я хочу интегрироваться в отдельное приложение?

Ответы на вопрос(2)

//........

ReportDocument StockObjectsReport;

string reportPath = Server.MapPath("StockObjectsReport.rpt");

StockObjectsReport.Load(reportPath);

StockObjectsReport.SetDataSource(stockValues);

//Export PDF To Disk

string filePath = Server.MapPath("StockObjectsReport.pdf");

StockObjectsReport.ExportToDisk(ExportFormatType.PortableDocFormat, filePath);
Решение Вопроса

как описано в размещенной вами ссылке, и создайте отчет (StockObjectsReport), как они указывают. В этом упрощенном примере я просто добавляю средство просмотра отчетов (crystalReportViewer1) в форму (Form1) и затем использую следующий код в событии Form_Load.

stock s1 = new stock("AWRK", 1200, 28.47);
stock s2 = new stock("CTSO", 800, 128.69);
stock s3 = new stock("LTWR", 1800, 12.95);

ArrayList stockValues = new ArrayList();

stockValues.Add(s1);
stockValues.Add(s2);
stockValues.Add(s3);

ReportDocument StockObjectsReport = new StockObjectsReport();
StockObjectsReport.SetDataSource(stockValues);

crystalReportViewer1.ReportSource = StockObjectsReport;

Это должно заполнить ваш отчет 3 значениями из объекта stock в форме Windows.

РЕДАКТИРОВАТЬ: Извините, я только что понял, что ваш вопрос был на VB, но мой пример на C #. Вы должны получить общее представление. :)

 26 мар. 2014 г., 03:10
@AsifQadri ты когда-нибудь разрешал это? У меня та же проблема.
 John21 июл. 2009 г., 06:42
Спасибо! Мне нужно было выйти за рамки того, что учебник предназначен только для веб-приложений.
 01 авг. 2011 г., 09:10
@ Пыльное решение не работает правильно. Предоставление исключения StockObjectsReport.SetDataSource (stockValues); на этой линии.

Ваш ответ на вопрос