【问题标题】:SQL Server Reporting Service: can anyone explain this strange behaviour when counting rows with RowNumber?SQL Server Reporting Service:在用 RowNumber 计算行数时,谁能解释这种奇怪的行为?
【发布时间】:2010-07-20 07:20:27
【问题描述】:

虽然我最初的计算表中的行数的问题已经解决了,但我仍然想知道 SQL Server 报告服务中以下行为的起源(我希望这个例子足够清楚):

我使用以下数据集创建了一个报告:

select 1 AS Column1, 'First' AS Column2
union
select 2 AS Column1, 'Second' AS Column2
union 
select 2 AS Column1, 'Third' AS Column2
union
select 3 AS Column1, 'Fourth' AS Column2
union
select 3 AS Column1, 'Fifth' AS Column2

在我的报告中,我创建了一个包含名为“list1_Details_Group”的组的列表,该组基于“列”,我在此列表中添加了一个包含两列的表;一个带有行号('=RowNumber("list1_Details_Group")'),一个带有'Column2'。 当我在我的 Group 中放置“Page break at end”时,输出结果符合预期:

alt text http://www.freeimagehosting.net/uploads/80536e09f9.png

但是,当我添加一个包含以下内容的文本框时:'="Number of items:" + ReportItems("RowNumber").Value.ToString',下一页上的第一个 rownumbers 出错了:

alt text http://www.freeimagehosting.net/uploads/716694d095.png

表格的第一行数与上一页文本框的值相同! 我没想到会出现这种行为,谁能解释为什么会发生这种情况?

顺便说一句:当文本框的内容是 '="Number of items: " +RowNumber("list1_Details_Group").ToString' 时,报告打印没有问题!

【问题讨论】:

    标签: sql-server-2005 reporting-services


    【解决方案1】:

    你在哪里添加文本框?在细节组?桌子底下?

    我会对此采取不同的方法。我会将它们全部呈现在一个表格中,显示组页眉和页脚(带有合并的列),并通过使用范围函数来计算组中的项目数。这样,它始终是一致的,并且行数不会有任何问题。

    行号非常脆弱,对布局或表达式的微小更改可能会由于不同的细微细节而破坏它。

    【讨论】:

    • 您的回答让我再次搜索,Microsoft 文档说明如下:当重新编号开始时,您为 RowNumber 指定的范围控制。 Nothing 关键字表示函数将从最外层数据区域的第一行开始计数。要在嵌套数据区域内开始计数,请使用数据区域的名称。要在组内开始计数,请使用组的名称。所以我猜当我使用'ReportItems(“RowNumber”)'时,它真的意味着RowNumber(nothing)......!?
    • 没错。大多数聚合函数也有一个可选的范围参数(例如 sum(fields!myfield.value) 也可以采用 sum(fields!myfield.value, "table1_group1")。对于计数等)
    猜你喜欢
    • 2015-02-18
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多