【问题标题】:Crystal Reports Best Practices水晶报表最佳实践
【发布时间】:2009-04-07 13:57:14
【问题描述】:

我没有太多管理报告的经验,但我开发的应用程序是这样工作的:

有一个界面供用户从报告列表中选择他们想要查看的报告。此列表由数据库中的报告表填充,该表包含报告名称、文件名和报告采用的参数等信息。

这些报告中有几个常用参数——它们是范围或排序——因此用户可能会调出一份关于所有编号为 200 到 4000、按 Foo 分组的小部件的报告。

现在一个人同时开发一个存储过程,和报表文件。他们把它传给我,我必须通过在生产中运行 sproc 脚本并将 .rpt 文件移动到正确的目录来部署它。然后,我必须在报告表中插入一条记录,其中包含名称、文件名和参数。

这是一个后勤挑战,因为没有很好的方法来跟踪哪些报告已部署到哪些系统(仅仅因为它们存在,并不意味着它们已更新,理想情况下总共有 4 个系统应该匹配) ,并且有几个可能的故障点:

1) sproc 中的参数与 .rpt 文件中的参数不匹配 2) 报告表中的参数与 .rpt 或 sproc 中的参数不匹配 3) sproc 被更新,而 .rpt 文件不是出于某种原因 4) 当新报表需要一个尚未在 params 页面中编码的参数时会发生什么?

这一切都归结为系统不够动态。就像我说的,我不知道报告,但我感觉做报告的人也不知道。似乎必须有更好的方法来保持 sproc 和 .rpt 文件同步,并通过反射之类的东西动态地询问它需要的参数。

这通常是如何处理的?

【问题讨论】:

    标签: c# sql-server sql-server-2005 crystal-reports


    【解决方案1】:

    我们只是使用默认的水晶参数提示引擎。否则,我们的报告解决方案与您描述的基本相同。

    把参数放到表格里是没有意义的。这些可以通过加载 ReportDocument 并读取参数集合来检索。您的提示引擎应查看此处,然后生成提示。否则,保持同步就太过分了。

    【讨论】:

      【解决方案2】:

      我不知道“通常”,但我们的应用程序将报告与存储过程 SQL 和可配置参数绑定在一个文件中。然后,我们的报告生成器应用程序可以反序列化从单个包运行报告所需的所有内容。所需的索引仅限于知道要显示给用户的有效文件名列表和相关的友好报告标题。

      这是在 C++/MFC 中使用股票 MFC 序列化完成的;我敢肯定,正如您所说,通过反射和 XML 序列化,在 C#/.NET 环境中可能会出现更巧妙的解决方案。

      【讨论】:

        猜你喜欢
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 2019-11-21
        • 2011-05-01
        • 1970-01-01
        相关资源
        最近更新 更多