visual-studio-2005 – 如何在没有紧密链接的数据库连接的情况下使用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 Whatever)的函数.

是否有捷径可寻?

提前致谢!

更新:好的,我在这里找到了一些东西:

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

但它似乎只为Web项目或Web应用程序提供此功能.如果我想要集成到一个独立的应用程序中,我运气不好吗?

最佳答案
继续按照您发布的链接中的描述创建库存对象,并按照指定创建报表(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;

这应该使用Windows窗体中stock对象的3个值填充报表.

编辑:对不起,我刚刚意识到你的问题是在VB中,但我的例子是在C#中.你应该得到一般的想法. 🙂

转载注明原文:visual-studio-2005 – 如何在没有紧密链接的数据库连接的情况下使用Crystal Reports? - 代码日志