【问题标题】:SSRS expression based on visibility of a textbox or column基于文本框或列的可见性的 SSRS 表达式
【发布时间】:2019-10-04 04:49:18
【问题描述】:

是否可以在 SSRS 中检查文本框的可见性(折叠/展开)并在表达式中使用它?

例如:

=iif(Fields!column1 Is Visible,"Use this label","Use this other label")

我想要完成的是让列标题的初始值显示一些文本,当用户单击特定值时会显示详细信息行(这是 Tablix),然后标题会更改为其他内容(例如初始报表状态是隐藏详细信息行,仅显示 Tablix 成员总计,因此当用户展开查看详细信息列标题更改为“…数字”时,列显示“…总计”。

在通过 VBA 的 MS Access 中,我可以检查可见属性并基于此创建代码。到目前为止,在 SSRS 2016 中还没有找到类似的方法。

尝试设置表达式以提高可见性以及设置表达式以更改文本框的值。

=IIF(Fields!accountnum.Value IS NOTHING OR Fields!accountnum.Value = TRUE,"Station #", "Station Count")

没有错误消息。我的结果应该是根据详细信息行是折叠(隐藏)还是展开(可见)来更改标题(文本框)值。

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    回答你的第一个问题:

    这当然是可能的,只是不是他们想要的方式。这是一个简单的例子。假设您的可见性标准是以下表达式:

    'Visibility expression
    =IIF(Fields!Category.Value = "Visible", False, True)
    

    现在您无需使用Is Visible 标准检查可见性,您只需再次使用相同的表达式。像这样:

    =IIF(
         IIF(Fields!Category.Value = "Visible", 
             Fale, 
             True) = True, 
     "This one is not visible", 
     "This one is visible")
    

    回答你的问题:

    他们按照你想要的方式去做,这是不可能的。但是您可以通过解决方法来做到这一点。 使用两个选项将用户定义的参数添加到您的报告中:

    • 显示详情
    • 隐藏详细信息

    然后将两个 tablix 添加到您的报告中。一个没有详细信息的 tablix 和一个包含您要显示的详细信息的 tablix。 然后转到第一个 tablix Tablix Properties > Visibility 并添加以下表达式:

    =IIF(Parameters!VisibilityParameter.Value = "Display details", True, False)
    

    以及其他 tablix 可见性的表达式:

    =IIF(Parameters!VisibilityParameter.Value = "Hide details", True, False)  
    

    现在将根据参数结果显示带有或不带有详细信息的 talbix。

    【讨论】:

    • 我认为您忽略了重要一点,OP 希望能够根据详细信息行的当前可见性状态而不是可见性字段来更改列标题。
    【解决方案2】:

    你可以这样做,也许它看起来不太优雅,但我会告诉你我做了什么,你可以看看它是否有用。

    注意:使用此方法,您无法直接更改实际的列标题,因为它超出了范围,因此可能无法满足要求,但您可以对其进行调整。我只是觉得这是一个很好的挑战! :)

    首先我得到了一些示例数据(WideWorldImports 示例数据库),这些数据只给了我 CountryID、CountryName 和 Continent。

    获得数据后,添加一个表格,将CountryName 拖到第一列并删除剩余的两列。

    然后右键单击 Details 行组并执行 Add Group => Parent Group 选择 Continent 作为 Group By 字段并选中 Add Group Header 选项。

    桌子的设计应该是这样的,好看又简单。

    接下来,我们将在详细信息行上设置切换。右键单击“详细信息”行组并选择“组属性”。在可见性上,单击“隐藏”并选中“可以通过报告项切换显示”为Continent

    我们现在应该有一个按预期展开和折叠的报表。

    接下来垂直展开国家名称上方的“空白单元格”,因为我们需要一些空间来处理。让它大约是正常高度的 4 倍,我们稍后会改回来,所以大小并不重要。

    在空白单元格中,右键单击并执行Insert => Rectangle。 在这个矩形中,右键单击并执行Insert => TextBox。双击文本框并输入您的“折叠状态”列标题标题。在我的示例中,我只使用了“折叠页眉”。 重复并添加另一个文本框(它必须再次在矩形内)。将此文本框设置为“扩展状态”标题。在这个例子中,我只使用了“扩展页眉”。

    接下来,右键单击“折叠标题”文本框,然后将属性设置为 Show,将切换项设置为 Continent

    重复您的“扩展标题”,但这次将可见性设置为Hide,就像这样..

    最后,将两个文本框放置在位置 0,0,使它们重叠并将单元格缩小到原来的大小。

    最终的设计看起来像这样......

    当我们第一次运行报告时,我们会看到这一点。

    如果我们扩展一个节点,我们会得到这个。

    【讨论】:

      【解决方案3】:

      我认为这在 SSRS 中是不可能的。您可以根据您的条件更改列标题文本,例如:IF (A) 然后标题 A 否则标题 B。但是您希望根据报告上的一些点击(展开/折叠)来更改列标题,这是不可能的。我的意思是我们需要一些数据来设置条件而不是点击。

      但也许对 SSRS 有更多经验的人会提出更多见解。

      【讨论】:

        【解决方案4】:

        这就是 InScope() 的用途。更多信息请见here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-28
          • 1970-01-01
          • 2011-09-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多