计算报告中的可见记录数,而不是数据集中的可见记录数

时间:2014-03-13 14:04:32

标签: visual-studio-2012 reporting-services ssrs-2012

我有一个报告显示服务器上的所有列名。 对于每个db,使用columname,它显示了它是什么数据类型。 E.g:

ColumnName | Type        | DB_Name

Teacher_id | varchar(25) | DB1
           | int         | DB2
Classroom  | varchar(25) | DB1
           | varchar(100)| DB2
Course_id  |  int        | DB2

您会看到数据类型按ColumnName分组。 现在我在ColumName分组上添加了一个过滤器,它只显示了包含多个数据类型的ColumnNames。

Teacher_id | varchar(25) | DB1
           | int         | DB2
Classroom  | varchar(25) | DB1
           | varchar(100)| DB2

但是现在当我对ColumnName执行countdistinct时,它会向我显示所有列名的总数,也包括隐藏的列号.......所以它不会产生2但是{{1} } 我怀疑这是因为过滤是在报告而不是数据集上完成的,但我觉得我仍然可以计算报告中列名的出现次数.....我试过=计数(在pageheader中的reportitems!Columname.value),但它给出了该页面上的列名数,而不是报告中的列号!

这里发生了什么?如何计算报告中的ColumNames数量?有没有?报表头而不是我可以使用的页眉?

1 个答案:

答案 0 :(得分:2)

  • COUNT(Fields!FieldName.Value):给出当前范围内的值计数。

  • COUNT(Fields!FieldName.Value," yourDataSetName"):为您提供数据集中的值计数。

  • COUNT(Fields!FieldName.Value," yourGroupName"):为您提供当前组中的值计数。

如果您使用过滤,则可能必须使用查询返回所需的值。过滤的值不包含在组内的聚合中。但是,请通过执行以下操作在数据集级别对此进行测试:

在表格或矩阵上方放置一个文本框,并为其赋予值COUNT(Fields!FieldName.Value," yourDataSetName")。如果它不等同,那么您需要将此数据与此一起返回。

解决方案二

打开报告属性代码并添加此自定义代码:

Public Shared Dim _RenderedCount As Integer=0

Public Shared Function ReInitRenderedCount() As string
    _RenderedCount=0
    return ""
End Function

Public Shared Function UpdateRenderedCount() As string
        _RenderedCount = _RenderedCount +1
    return ""
End Function

Public Shared Function GetRenderedCount() As Int    
    Dim ret As Int  
    ret=_RenderedCount
    Return ret
End Function

我之前添加了这样的代码片段,基本上你在细节线上设置了一个没有背景的可见列,也许是最后一列。然后你可以设置它的值= Code.UpdateRenderedCount(),它更新渲染的计数但返回""。然后,您可以使用label.value = Code.GetRenderedCount()检查并打印渲染的计数。