【问题标题】:Using subreports with Microsoft's ReportViewer control in local mode在本地模式下使用带有 Microsoft 的 ReportViewer 控件的子报表
【发布时间】:2009-07-02 22:52:59
【问题描述】:

在本地模式下使用 Microsoft 的 ReportViewer(VS 2008 风格)时,有没有人推荐一个优秀的参考资料?我目前正在使用它,但它的一部分有点像黑匣子,所以我想阅读整个主题。

特别想开始使用子报表来显示更复杂的父子报表。我假设它们的工作模式与我相当熟悉的 Crystal Reports 类似。

谢谢,罗伯。

【问题讨论】:

    标签: reportviewer


    【解决方案1】:

    http://www.gotreportviewer.com 的链接曾经很好,但它看起来确实像本地子报告中的材料,而且 ReportViewer 2008 有点稀疏并且在网络上散布开来。这将是一个值得写博客的主题,所以我会:-)

    这里有几个标题:

    1. 子报表是完全独立的报表,但使用标准报表参数机制链接到主报表。主报表被配置为将其一个或多个字段(例如主键)传递给子报表。然后,子报表通常会将此参数用作其自身查询的参数以加载数据集
    2. 即使您在设计子报表时可能已经针对子报表定义了数据源,但在主报表中使用时不会使用它。相反,您必须为 SubreportProcessing 事件实现一个处理程序。您添加到主报表的每个子报表都会调用相同的处理程序,因此您可以查询传递给处理程序的参数以确定要加载的数据集。
    3. 对于主报告中的每条记录调用一次事件处理程序。例如,如果主报表显示 200 条记录,则事件处理程序被调用 200 次,但每次使用不同的参数。
    4. 因此,您必须对性能保持警惕。我运行的第一个报告有 2,000 条记录(对于平面报告来说完全可以),但是这 2,000 条记录中的每条记录都为子报告获取了 20 条子记录。它确实运行了,但需要几分钟才能呈现报告
    5. 如果您可以对数据进行结构化,以便可以使用包含主报表和子报表数据的单个数据集,则嵌套数据区域具有更好的性能 - 只有一个查询返回 2,000 条记录,而不是 2,000 条单独的查询。见http://www.gotreportviewer.com/masterdetail/index.html

    干杯,罗伯。

    【讨论】:

      【解决方案2】:

      我曾经使用过 ReportViewer 控件,并且能够在 http://www.gotreportviewer.com 找到一些有用的信息

      【讨论】:

      • 感谢您的参考 - 它看起来很有用
      【解决方案3】:

      【讨论】:

      • 是的,例如在示例和演练中,我在本地模式下的子报表中看不到任何内容。我一直在寻找纯参考库中经常缺少的文档——设计原则的概述和讨论。例如,为什么你必须在那里放置一个表格或列表。如果你不这样做,为什么要在字段周围添加 =First() 。我现在知道答案了,但要找到答案需要大量的挖掘。
      • @Rob:谢谢。如果您找到了一些答案,那么也许您应该写一些文章,或者通过在 SO 或 social.msdn.microsoft.com/Forums/en-US/sqlreportingservices/… 上回答问题来做出贡献。例如,我没有使用 ReportViewer 控件;本地模式有何不同?为什么使用控件时子报表不同?如果你已经学会了艰难的方式,也许你可以帮助其他人避免这种情况。再次感谢。
      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 2017-07-19
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多