(5)在“预览”按钮click事件函数中加入如下代码:
源码清单7
{
BindReport();
CrystalReportViewer1.Visible = true;
}
这段代码调用了一个定制方法BindReport(),然后显示水晶报表视图控件(Crystal Report Viewer)。
(6)现在,添加如下的定制方法:
源码清单8
{
ReportDocument report = new ReportDocument();
report.Load(Server.MapPath("Invoice.rpt"));
SetTableLocation(report.Database.Tables);
CrystalReportViewer1.ReportSource = report;
report.DataDefinition.RecordSelectionFormula =
"{SalesOrderHeader.ContactID} = " + ddlCustomer.SelectedItem.Value;
}
private void SetTableLocation(Tables tables)
{
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = @"ZXZCOM";
connectionInfo.DatabaseName = "AdventureWorks";
connectionInfo.IntegratedSecurity=true ;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogOnInfo = table.LogOnInfo;
tableLogOnInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogOnInfo);
}
}
上面代码中的第一个方法创建了ReportDocument类的一个实例。这个实例对应于先前创建的报告,并允许您在运行时操纵它。接下来,SetTableLocation()方法负责设置报告中的每个表格的位置。在本例中,假设您已经使用Windows系统安全模式来管理SQL Server 2008数据库服务器安全性。此时,水晶报表视图控件的数据源被设置为上面的报告对象。下一行代码负责使用从下拉列表中选定的客户数据动态过滤显示报告。这仅需创建一个带有WHERE子句的SQL字符串语句。注意,当你引用一个字段时必须使用大括号{}把报表字段包围起来。
现在,你就可以运行上面的项目。如果你从下拉列表中选择“Abel, Catherine”并按一下“预览”按钮,那么你应该会看到如图6所示的运行时快照。
图6 发票报表应用程序的运行时快照
你可以使用页面顶部的导航按钮来自由浏览报表,特别注意观察它是如何进行分组显示的。
四、总结
水晶报表是一个极其强大的报表工具,可以进行导出Word、Excel和RTF等文件,还可以生成复杂、漂亮的图表,可以说是进行Web和Windows桌面开发必备的利器。
本系列文章中,我们使用详细的步骤与实例展示了使用水晶报表创建一个主/从式数据库记录报表的全过程。其中,我们详细介绍了如何使用公式编辑器以及动态设置格式。最后,我们把报表文件输出到ASP.NET页面中。特别值得一提的是,这款软件是随同Visual Studio 2008一起免费发行的。
另外,通过文中水晶报表的构建过程不难看出,水晶报表本身的使用是比较简单的,对于以前有过VFP、VB及其他桌面应用报表开发的读者尤其如此。而报表构建前期的数据连接过程便显得比较重要,特别是涉及到多张表格的情况下,正确地确立这些表格间的关联关系直接决定了后面报表设计的成败,应引起足够的重视。
下载文章内清晰版图片:http://download.itpub.net/html/2009/1013/2432200910131042507946.shtml
系列文章索引:
ASP.NET 3.5下基于Crystal Reports的报表编程