SSRS自定义代码和变量生命

时间:2013-05-15 11:48:58

标签: sql reporting-services tfs report

我有一个报告需要在显示之前处理从SQL获取的数据。 为此,我有一个自定义代码和一个字典,我推送所有处理过的数据。 我的问题是,当我将报表导出到Word时,如果我将字典保存在报表变量中,那么该变量似乎已被清除。 报告变量的生命周期是什么?在报告生命期间保存对象的最方便方法是什么。

谢谢!

1 个答案:

答案 0 :(得分:2)

我一直在使用自定义代码大约6周,因此我可以回答SSRS 2008 R2中可变生命周期问题的某些部分。

我的报告使用字典来存储总计,允许我为财务资料提供一些专家小计。我有一些你可以检查的东西(因为我还不能对事情发表评论)。

您是否已将变量声明为“共享”,这是一个自定义代码特定的关键字,不会转换为VB.net。它确保变量适用于下一页,我将其测试到Excel并且单词似乎可以正常传输变量的数据。

然而,根据SSRS“按需报告”引擎(在网络上,但不在BIDS上)存在权衡,它保留变量并且在缓存本身被清除之前不进行垃圾收集。我写了一些自定义代码来指示我的参数何时更改并清除变量。

代码;

Public Shared Dim Totals As New System.Collections.Generic.Dictionary(Of String, Decimal)

Public Function WipeKeys() as Decimal 'Clear Data from Dictionary (this will clear the cached object as well)
  Totals.Clear()
  Return 0D
End Function

我还建议尽可能覆盖密钥,以确保减少加法循环。

此致