如何在SSRS报表的嵌入式代码中引用字段

5
有没有一种合适的方式可以在SSRS报表的嵌入代码中引用报表的字段?当我尝试使用 Fields!Program.Value 时,会出现以下错误 -
“自定义代码第3行存在错误:[BC30469] 引用非共享成员需要对象引用。”
通过谷歌搜索,我发现您可以通过在开头添加Report. 来引用报告参数。所以我尝试了这个Report.Fields.Program.Value
这导致了以下错误...
“自定义代码第3行存在错误:[BC30456]“Fields”不是“Microsoft.ReportingServices.ReportProcessing.ExprHostObjectModel.IReportObjectModelProxyForCustomCode”的成员。”
因此...总之,有没有一种方法可以直接从嵌入代码中引用字段。我发现我可以将字段值传递给函数本身,但我更喜欢直接引用字段。
塞斯
2个回答

5

谢谢,这就是我需要知道的。Seth - Seth Spearman
我觉得在报告服务中,参数可以直接访问而字段必须通过传递才能访问这一点毫无意义。如果参数不能直接访问或者字段可以直接访问,那么更加一致性。无论如何,感谢 @gbn 的答案和 @Seth Spearman 的提问。 - Michael Eakins
1
@Michael Eakins:对于数据集来说这是有意义的。参数是单一、标量和离散的,因此可以被普遍访问。如果你有1000行数据,你怎么知道哪个文本框属于哪一行的数据?这种语法使其明确且更少出错。 - gbn
我想得太狭隘了,你的情况让它变得清晰明了。谢谢! - Michael Eakins

4
你有另外两种选项来传递参数,但两者都不太美观。
(注意!在我写下面的段落之后,我发现本地处理模式不支持来自查询的默认值,因此这种解决方案可能对您无用,就像对我一样。)
你可以创建一个带有默认值设置的隐藏报表参数,然后使用“Report.Parameters!MyParam.Value”语法引用它。在测试时必须小心,因为(至少在BI studio 2005中)似乎预览选项卡中的报表参数不能可靠地从数据库重新初始化。
或者,您可以在报表上创建一个隐藏的文本框,其文本来自数据集,然后从代码中引用文本框。在这种情况下,您必须将“ReportItems”对象作为参数传递,但稍微有点优势是它只是额外的一个参数。在声明参数时务必对其进行强类型化:
public Sub MyCustomCode(ri as ReportItems)

在BI Studio中,即使没有类型声明,代码也可以正常工作,但是如果没有'as ReportItems',在本地处理模式下,会在报表查看器控件中出现错误。

无论哪种情况,这只对页面级别的数据有用,因此用于表格的函数仍应该接受参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接