即时生成水晶报表

Posted

技术标签:

【中文标题】即时生成水晶报表【英文标题】:Generate Crystal Report 'on the fly' 【发布时间】:2010-01-08 20:17:05 【问题描述】:

我正在做一个 Asp.Net 应用程序,它最终会使用用户输入的参数生成“动态”报告。我正在尝试了解如何动态生成 Crystal Report 报表。

实际上,我已经调用了一个存储过程并用结果填充了一个 DataTable。但是我的问题缺少一部分。如何使用 DataTable 填充 CrystalReportViewer。

我想我必须创建一个 .rpt 文件并填充它,但这不是无用的代码重复吗?

谢谢

【问题讨论】:

您确实需要一个 .rpt,这是您的报告定义。水晶报表查看器可让您查看实际报表。使用水晶时,有两种方法可以将数据导入其中,您可以使用报表从数据源中提取数据,也可以将数据推送到报表中,例如为报表创建 xsd、构建数据集并将此数据集推送到报表中。 好的,谢谢。你能告诉我在哪里可以获得有关这些 rpt 文件的资源吗?我不太明白它们是如何工作的以及如何正确构建它们。 【参考方案1】:

这并不是您要找的……但这是我们用来即时生成 Crystal Reports 的 PDF 副本的代码 sn-p。

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Using rpt As New ReportDocument()
  With rpt
    .Load("/Path/To/RTPFile.rpt", OpenReportMethod.OpenReportByTempCopy)
    .SetDataSource(dataSource)
    .ExportToDisk(ExportFormatType.PortableDocFormat, "/Path/To/Report.pdf")
  End With
  rpt.Close()
End Using

在这种情况下,“数据源”是一个 XSD 数据集,已加载准备就绪的报表数据。

【讨论】:

【参考方案2】:

水晶报表不需要数据表,但需要 rpt 文件。您可以使用存储过程作为水晶报表的数据源,而不是填充数据表。将数据源设置为存储过程的最简单方法是在 .rpt 文件中。在 Visual Studio 中的 Crystal Reports ->Database->Database Expert 下,然后选择您的数据库和您希望用作数据源的存储过程。

【讨论】:

如何将数据源设置为存储过程?

以上是关于即时生成水晶报表的主要内容,如果未能解决你的问题,请参考以下文章

制作多页报表:水晶报表查看器只生成第一页(C#)

vc++在使用vs2008 中自带的水晶报表的例程 跪求

Visual Studio 2010 里面的水晶报表怎么弄?

水晶报表显示动态图片

使用两个表生成水晶报表

如何添加ASPNETDB.MDF数据库生成水晶报表