如何使用Crystal Reports没有紧密连接的数据库连接?(How to use Crysta

2019-06-26 03:52发布

我正在学习使用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。 这样,我有对象的文本描述正确的,我可以用其他的东西随身携带它。

因此,在我的水晶报表的问题。

水晶报表似乎使得它可以直接在一个特定的表(特别是与专家)挂钩记载,但是这就是你得到的。

理想情况下,我想使我的类的列表,像

Dim assetIdentifiers as New List(Of AssetIdentifier)

并传递到水晶报表,而不是做一个紧密链接到一个特定的数据库中,有大部分为我做的工作,但留下我来解决一部分,它不会做。 我到目前为止看到的最接近的是一个ADO.NET数据集,但即使这样似乎相去甚远。 我已经精细处理查询自己:我有一个基于查询返回列表(无论什么)的各种功能。

是否有捷径可寻?

提前致谢!

UPDATE:OK,我发现这里的东西:

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

但它似乎只给这种能力对于Web项目或Web应用程序。 难道我的运气了,如果我想融入一个独立的应用程序?

Answer 1:

继续创建股票的对象为您发布的链接描述并创建报告(StockObjectsReport)为它们指定。 在这个简化的例子中,我简单地报告查看器(crystalReportViewer1)添加到一个窗体(Form 1),然后在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;

这应该填充与股票对象在Windows窗体中的3个值报告。

编辑:对不起,我只是意识到,你的问题是在VB,但我的例子是在C#。 你应该得到的总体思路。 :)



Answer 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);


文章来源: How to use Crystal Reports without a tightly-linked DB connection?