C#WPF应用程序中的可插拔报告工具

C#WPF应用程序中的可插拔报告工具,c#,wpf,reporting-services,reporting,C#,Wpf,Reporting Services,Reporting,我的应用程序需要能够创建和生成报告,似乎有两个主要选项是SSRS或Crystal reports,还有一系列其他选项,如基础设施、活动报告等 由于该应用程序将在各种不同的公司环境中使用,因此将有不同的优先级,这是他们的报告工具。例如,一个客户可能是SSRS用户,另一个客户可能认为Crystal是有史以来最好的产品 这意味着,重要的是不要将我的应用程序绑定到一个特定的报告工具,而是能够从众多工具中插入相关工具 有人做过类似的事情吗? 在总体层面上,您将如何着手实施该计划?我应该注意哪些问题 提前谢

我的应用程序需要能够创建和生成报告,似乎有两个主要选项是SSRS或Crystal reports,还有一系列其他选项,如基础设施、活动报告等

由于该应用程序将在各种不同的公司环境中使用,因此将有不同的优先级,这是他们的报告工具。例如,一个客户可能是SSRS用户,另一个客户可能认为Crystal是有史以来最好的产品

这意味着,重要的是不要将我的应用程序绑定到一个特定的报告工具,而是能够从众多工具中插入相关工具

有人做过类似的事情吗? 在总体层面上,您将如何着手实施该计划?我应该注意哪些问题

提前谢谢你的帮助


Alex

您可能会遇到的问题是,所有这些系统都使用自己的数据源对象和渲染引擎,您需要使用自己专有的查看器控件分别实现每个系统。您可能会将所有查看器的样式设置为外观相同,但它们不会都具有相同的功能

如果您使用业务对象作为数据源,我强烈建议您首先将数据发送到数据库,因为如果您直接从数据库中提取数据,您会发现每个报告解决方案的开销要小得多


每个报表查看器(来自不同报表解决方案的查看器)都允许您从查看器中剥离除主报表视图窗格之外的所有内容。然后,您可以实现自己的按钮,如“打印、导出为PDF、XLS、缩放、页面后退、页面前进。还有更多。然后,您可以将按钮连接到报表查看器控件上的功能,即查看器。缩放(100)。不过,您可能会在这方面浪费很多时间,因为重新编码已有的按钮并使其正常运行需要花费大量精力。

您是否需要在运行时使用可插拔的报告,或者在根据目标环境构建应用程序之前做出选择?我认为从实际角度来看,这是可行的在部署到目标环境之前更容易做出选择。我认为否则会有太多的开销。PRISM给了我机会让两个模块都有自己的报告引擎,但应用程序与它们交互的方式实际上是相同的。我认为PRISM路线有一些优点t因为我当前的应用程序使用了很多PRISM框架。我可以问一下你如何与主应用程序中的报告模块交互吗?感谢我的情况,我使用EventAggregator,这样我就可以从任何模块调用函数。提示是只加载所需的报告模块。我的意图是直接从D中提取数据B-然而,这仍然留下了问题,因为你说每个供应商有不同的实现-我认为这是一个如何隐藏这个细节的问题?定义“隐藏”,你说用户将知道他们是想使用Crystal还是SSR,所以他们将选择他们想要的,你将打开一个窗口,显示Crystal或SSRe SSRS报表查看器再次思考,我猜“隐藏”意味着我需要定义一个与我的应用程序相同的界面,但使用报表模块中的各种报表控件实现。添加了一个编辑,尽管我强烈建议重新考虑使用开箱即用的报表查看器,但它们有不同的图标实际上,它们都提供相同的特性。