我有一个报告显示服务器上的所有列名。 对于每个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数量?有没有?报表头而不是我可以使用的页眉?
答案 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()检查并打印渲染的计数。