我希望将 Crystal Reports 2008 集成到 Windows 窗体应用程序中。我想避免从我的客户端应用程序直接连接到数据库,同时为用户提供“完整”的报告体验。Crystal Reports 2008 是否可以将服务器上的报表执行到客户端 Windows 窗体客户端控件中,类似于 Microsoft Reporting Services?
3 回答
我不知道这是否正是您所追求的,但我可以想到两种方法可以捏造它:
- 您可以设置您的报告,使“数据库”是一个 XSD 文件,而无需了解真正的后端。然后在运行时将数据推送到报告中。
// 在运行时创建一个适合您的环境的实例 - 仅示例:
ReportClass rc = new ReportClass();
rc.Load(水晶报告文件名);
rc.SetDataSource(myIEnumerableData);
CrystalReportViewer crv = new CrystalReportViewer();
crv.ReportSource = rc;
// 显示水晶查看器。
2 - 您可以在服务器上执行与 1 相同的操作(无论数据库方法如何),然后保存报告并将其推送到客户端。
// 一些服务器端服务/方法等
公共字节[] GetMyReport() {
ReportClass rc = new ReportClass();
rc.Load(水晶报告文件名);
rc.SetDataSource(myIEnumerableData);
rc.SaveAs(serverSideFile, True); // True 对于使用报告保存数据至关重要
return .... // 将创建的文件转换为我想的字节数组
}
// 客户端
字节 [] 代表 = 服务器。获取我的报告()
ReportClass rc = ..... // 将 rep 转换回水晶报表
CrystalReportViewer crv = new CrystalReportViewer();
crv.ReportSource = rc;
这并不是您真正要问的,但 Crystal Reports Server 会执行服务器端报告。
不利的一面是,它非常昂贵。
http://www.businessobjects.com/product/catalog/crystalreports_server/
我无法在上面添加评论,因为我没有任何观点,但希望这会有所帮助。
Crystal Reports Server 针对数据源运行报表,其想法是没有 Crystal Reports 或数据访问权限的客户端可以通过 Web 运行报表,或者服务器运行计划报表并将结果发送出去。我不知道你是否可以整合它。