2009-09-09 37 views
4

有没有从ssrs报告的嵌入代码引用ssrs报告的字段的正确方法?如何引用SSRS报告的嵌入代码中的字段

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

有上的自定义代码3行的错误:[BC30469]
参考非共享成员需要对象参考。

当谷歌搜索时,我发现你可以通过在开始时预先加上Report.来引用报告的参数。所以我试过这个Report.Fields.Program.Value

导致以下错误...

有上的自定义代码3行的错误:[BC30456]“字段”不是“Microsoft.ReportingServices.ReportProcessing.ExprHostObjectModel的成员.IReportObjectModelProxyForCustomCode”。

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

Seth

回答

4

您必须将它作为参数传入。

=Code.ToUSD(Fields!StandardCost.Value)

+0

谢谢...这就是我需要知道的。 Seth – 2009-09-09 18:49:33

+0

对于我来说,在报告服务中,一个参数可以直接访问,而一个字段必须被传入,这是毫无意义的。如果其中一个参数不能被直接访问,或者一个字段可以被直接访问。无论如何,@gbn感谢您的回答,并且@Seth Spearman感谢您的提问。 – 2011-05-31 12:26:58

+1

@Michael Eakins:对数据集有意义。一个参数是单一的,标量和离散的,因此可以普遍访问。如果您有1000个数据行,您如何知道哪一行属于该行中的数据?这个语法使得它明确且不易出错 – gbn 2011-05-31 12:54:55

4

你做有两个其他替代的参数传递,虽然也不是很漂亮。

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

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

或者,您可以在报告中创建隐藏文本框,并从数据集中设置其文本,然后从代码中引用文本框。在这种情况下,您必须将ReportItems对象作为参数传递,但其优点是它只有一个额外的参数。声明时,一定要坚决类型的参数:

public Sub MyCustomCode(ri as ReportItems) 

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

在这两种情况下,这只对页面级数据非常有用,所以表中使用的函数仍然需要参数。