【问题标题】:How to create an RDL using the report class generated from the RDL schema如何使用从 RDL 模式生成的报告类创建 RDL
【发布时间】:2013-06-24 19:47:13
【问题描述】:

我有一个项目,我们正在为 SSRS 2008R2 创建自定义报告生成器。该项目允许用户从数据库中选择字段,然后在报表服务器上创建和存储 RDL。 对于一些最初的概念验证尝试,我们一直在使用 XMLText 编写器来生成 XML 文件。虽然这可行,但这似乎很麻烦,而且我对如何将模式生成为 100% 防弹的方式没有太多信心。第二次尝试实际上是使用从 RDL 生成的类作为我的对象模型。我被困在这里的地方是关于如何使用这个对象的文档几乎为零。 MSDN has a tutorial 更新模型,但它在概念上非常基本。

我正在寻找有关首选方法的一些指导。 1) 继续生成 XML 2) 使用 RDL 对象创建报表 3) 我还考虑使用 SSRS 端点,在该端点创建虚拟报告并将其存储在服务器上,然后使用 RDL 对象模型使用必要的字段、组等更新报告。

我还没有测试过第三个选项,但它似乎可以最大限度地减少创建文档的编码量。

感谢您的任何建议或想法

【问题讨论】:

    标签: sql-server reporting-services ssrs-2008


    【解决方案1】:

    我刚刚构建了一个程序,可以根据报告模板和存储过程创建 SSRS 报告。

    我正在使用 RDLObjectModel 创建报告。并且 RDLSerializer 允许将报表保存到文件或报表服务器。我首先通过 SSRS Web 服务从我们的报表服务器加载一个报表模板,以将服务器报表反序列化为 RDLObjectModel。然后我为报表字段派生参数,并从存储过程中派生字段以制作报表数据集。

    我遇到的问题是我无法序列化报表对象以将其保存到服务器或文件中,因为在 RDL2008 中,RDLSerializer 是私有的。然后我发现了一篇让我很头疼的文章。 http://ucodia.fr/2011/10/advanced-reporting-services-part2-rdl-serializer/

    这是一种比使用 XMLTextWriter 更好的方法。这应该为您提供足够的帮助。

    【讨论】:

    • 感谢您的意见。我也阅读了这篇文章,我认为这是我将要使用的方法。我选择不使用 RdlSerializer,因为它依赖于其他程序集(如文章所述)。相反,我使用的是这篇 MSDN 文章建议的方法,只使用 XMLserialization 将 rdl 添加回 ssrs 存储 msdn.microsoft.com/en-us/library/aa337428%28v=sql.105%29.aspx 再次感谢您澄清该方法
    • 我也读过那篇文章。我开始尝试使用 RDLSchema 构建我的报告,但与使用 RDLObjectModel 相比,它似乎不太直观。就像link...这样的代码对我个人来说不是很友好:'Dim reportItems As List(Of ItemsChoiceType118) = New List(Of ItemsChoiceType118)(m_report.ItemsElementName)'和'DirectCast(m_report.Items (index), StringLocIDType).Value = "新报告描述"'
    【解决方案2】:

    我在使用 RdlObjectModel 创建报表对象时遇到了同样的问题,但我无法对其进行序列化。有一种方法可以解决这个问题,您仍然可以获取 RdlSerializer 的实例并使用反射调用 serialize 方法

    你可以在下面的link找到实现

    【讨论】:

    • 这个答案有什么问题,它已经在我正在开发的生产系统中实现并运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多