【问题标题】:How do you reference a field in the Embedded Code of an SSRS report如何引用 SSRS 报告的嵌入式代码中的字段
【发布时间】:2009-09-09 15:45:53
【问题描述】:

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

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

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

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

这会导致以下错误...

自定义代码的第 3 行出现错误:[BC30456] 'Fields' is not a member of 'Microsoft.ReportingServices.ReportProcessing.ExprHostObjectModel.IReportObjectModelProxyForCustomCode'。

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

赛斯

【问题讨论】:

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


    【解决方案1】:

    你必须把它作为参数传入。

    =Code.ToUSD(Fields!StandardCost.Value)

    【讨论】:

    • 谢谢...这就是我需要知道的。赛斯
    • 对我来说,在报表服务中,可以直接访问参数而必须传入字段,这对我来说没有任何意义。如果不能直接访问参数或无法直接访问参数会更一致。字段可以直接访问。无论如何,@gbn 谢谢你的回答,@Seth Spearman 谢谢你的问题。
    • @Michael Eakins:这对数据集很有意义。参数是单一的、标量的和离散的,因此可以普遍访问。如果你有 1000 个数据行,你怎么知道哪一行的哪个文本框属于那一行的数据?这种语法使其明确且不易出错
    • 我的想法很狭隘,你的场景很清楚。谢谢!
    【解决方案2】:

    除了通过参数传递,你还有另外两种选择,虽然都不是很漂亮。

    (当心!在我写完以下段落后,我发现本地处理模式不支持查询的默认值,因此第一个解决方案可能不适合您,因为它不适合我。)

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

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

    public Sub MyCustomCode(ri as ReportItems)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多