动态地将列添加到SQL Reporting服务中

时间:2010-10-26 10:25:37

标签: sql reporting-services

映射到报表查询构建器的存储过程动态地返回值,表示一次8列,有时是6列。我的问题是如何为额外添加的列命名标题?

4 个答案:

答案 0 :(得分:1)

对于每个动态列,右键单击列标题并选择属性。在属性窗格的“可见性”部分下,单击“隐藏”旁边的向下箭头,然后选择<Expression...>。粘贴以下内容并更改字段名称以匹配您的数据库。

=IIf(Fields!name.Value Is Nothing, True, False)

运行报表时,如果动态列中的值为NULL,则将隐藏该列。如果它包含非空值,则将显示列。

答案 1 :(得分:1)

需要记住的一件重要事情:当我们绑定动态数据集时,SSRS无法检测数据集中存在的字段。为此,我们需要在数据集中指定所有可能的字段,为此,请按照以下步骤操作:

  1. 转到报告中的“数据”选项卡,然后打开返回的数据集 动态列
  2. 单击数据集旁边的...按钮以编辑数据集
  3. 将出现数据集的弹出窗口,在该窗口中将转到“字段” 标签
  4. 我们必须在数据集
  5. 中写下所有可能的字段
  6. 点击确定并预览报告

答案 2 :(得分:0)

您是否尝试过在您的sp中执行COALESCE,在那里您总是可以找到这两个“动态”列?像COALESCE(sp.YourColumn, NULL)这样的东西。然后,您将能够在报表中创建表达式,并在返回NULL或空白时隐藏该列。也许类似于Visbility = IIF(Fields!DynamicField1.Value is Nothing, False, True)

答案 3 :(得分:0)

调整存储过程,以便始终返回8列。如果您不希望它们出现在报告中,只需在两个动态列中返回NULL。

对于每个动态列,右键单击列标题并选择属性。在属性窗格的“可见性”部分下,单击“隐藏”旁边的向下箭头,然后选择<Expression...>。粘贴以下内容并更改字段名称以匹配您的数据库。

=IIf(Fields!name.Value Is Nothing, True, False)

运行报表时,如果动态列中的值为NULL,则将隐藏该列。如果它包含非空值,则将显示列。

祝你好运,欢迎来到网站!