如何引用SSRS报告的嵌入代码中的字段

时间:2009-09-09 15:45:53

标签: sql-server visual-studio reporting-services

是否有正确的方法从ssrs报告的嵌入代码中引用ssrs报告的字段?

当我尝试使用Fields!Program.Value时,我收到以下错误 -

  

自定义代码的第3行出现错误:[BC30469]
      对非共享成员的引用需要对象引用。

通过Google搜索,我发现您可以通过在开头添加Report.来引用报告的参数。所以我尝试了这个Report.Fields.Program.Value

导致以下错误......

  

自定义代码的第3行有错误:[BC30456]'Fields'不是'Microsoft.ReportingServices.ReportProcessing.ExprHostObjectModel.IReportObjectModelProxyForCustomCode'的成员。

所以......总之,有没有办法从嵌入代码中引用字段。我想我可以将字段值传递给函数本身,但我更喜欢直接引用这些字段。

赛斯

2 个答案:

答案 0 :(得分:4)

您必须将其作为参数传递。

=Code.ToUSD(Fields!StandardCost.Value)

答案 1 :(得分:4)

你还有另外两种方法来传递参数,但两者都不是很漂亮。

(当心!之后我写了下面一段,我发现从查询默认在本地处理模式下不支持所以这第一个解决方案是不可行的你,因为它是不适合我。)的< / p>

您可以使用从数据集设置的默认值创建隐藏的报表参数,然后使用Report.Parameters!MyParam.Value语法对其进行引用。测试时必须小心,因为(至少在BI工作室2005中)报告参数似乎无法从预览选项卡中的数据库中可靠地重新初始化。

或者,您可以在报表上创建隐藏文本框,并在数据集中设置文本集,然后从代码中引用文本框。在这种情况下,您必须将ReportItems对象作为参数传递,但稍有好处的是它只有一个额外的参数。确定在声明时强烈输入参数:

public Sub MyCustomCode(ri as ReportItems)

代码将在没有类型声明的BI工作室中工作,但对我来说,如果“as ReportItems”不存在,它会导致报表查看器控件在本地处理模式下出错。

在任何一种情况下,这仅对页面级数据非常有用,因此在表中使用的函数仍应采用参数。