2

我在创建 .rdlc 报告时遇到问题。该报告的重点是显示巴士路线上的乘客数量(它包含该路线上每个车站的乘客数量)。DataSet 填充了一个存储过程(我无法更改)。每条路线的数据由两部分组成-第一部分包含特定路线上的车站名称(有表示乘客数量的列,但它们的值为空),第二部分包含乘客数量对于每个站。这两个部分都是同一个存储过程的结果,它们显示在同一个表中。我遇到的问题是每条路线都有不同数量的车站。所以我的问题是 - 我怎样才能制作一个报告(或子报告),以适应特定路线上的车站数量(列数应该与路线上的车站数量相同)。值得一提的是,不同站点数量的路线应显示在同一份报告中。我正在使用 VS 2010 和 C# 创建生成此报告的应用程序。你能帮我解决这个问题吗?谢谢

示例 不幸的是,我不允许诋毁特定数据,但我会尽力为您提供必要的信息。存储过程的结果具有以下结构: Route_ID | Departure | DataType | StationName | Passengers1....Passengers61 该报告按 Route_ID 分组。DataType 值定义该行是否包含车站名称(结果的第一部分)或乘客人数(第二部分)。例如,如果一条路线有 3 个车站和一个出发地,则该组将有 4 行 - 前 3 行将包含 Route_ID、DataType 和 StationName(每行有不同的 StationName,前 2 个参数将相同),其他列将有空值。第二部分由 Route_ID、DataType(不同于前一部分)和乘客列中的值组成(同样,其他列将为空)。所以我需要一个子报表,它的列数与第一部分的行数相同。我知道这很复杂,但整个问题非常复杂。

4

1 回答 1

1

可能不是您想听到的答案,但是在 RDLC 中动态创建列是相当困难的(至少我无法让它工作)。

如果可能的话,我会建议这个(有点不干净)的解决方案:用尽可能多的站点创建你的表:

BUS | StationA | StationB | StationC | StationD | ..
X9Z | 4 people | 5 people | 0 people | 9 people | ..

然后向每个站列添加可见性表达式,即iif(StationB > -1, true, false)。只有在设置值时才会显示列。当然,这意味着您必须提前定义所有站点(并维护它们)。因此,如果您有 50 个站点,那将是一个痛苦的背后。

选择

如果您有很多站点,我个人建议您寻找其他一些报告生成器,例如Crystal Reports(请注意,我自己没有这方面的经验,尽管在搜索 RDLC 解决方案时它经常越过我的路径)。

格式化您的数据

阅读您的编辑后,听起来您的数据集结构不是很实用。我建议填充一个更符合您想要显示的内容的自定义对象,并在您的 RDLC 中使用它。

以下问题指的是:Use custom objects as source for Microsoft Reports (.rdlc)

这个链接基本上是答案:http ://www.gotreportviewer.com/objectdatasources/index.html

于 2013-01-22T10:11:05.737 回答