从许多表中填充rdlc报告

时间:2013-01-21 19:47:17

标签: c# asp.net rdlc

我有一份RDLC报告,其中显示了一个行表,每个行表示一名员工为特定客户提供的时间表条目,例如:

Date      Client    Employee  |Work Type |Hours Rate Total Total Invoiced Profit
2012-01-20|Client A|Employee 1|Project A |3.00|30.00|90.00|120.00        |30.00

2012-02-20|Client A|Employee 2|Project B |2.00|40.00|80.00|100.00        |20.00

....................................................................

Totals Client A                           5.00|70.00|170.00|220.00       |50.00

Company annual Fee 2012                              150.00

Total PL                                             200.00

上表的数据来自两个不同的表,即为每个客户输入的时间表条目表,以及保存客户发票金额的InvoiceEntries表。通过运行查询来填充数据的DataTable,连接两个表,并返回一个表,如:

Date|Employee|Client|Hours Worked|Rate|Total|Invoiced Amount|Annual Fees

现在,因为同一客户端的所有行的年度费用相同,并且因为我想按客户端对数据行进行分组并且报告底部有总计,所以我在后面的代码中以编程方式创建了一个新的DataTable,我使用来自数据表的数据来填充我从数据库查询获得的数据,通过它的行运行循环,但我操纵AnnualFees字段只有在我更改公司时才有值,否则我将其设置为零。因此,我确保每个客户的年度费用字段仅填充一次,这样当我计算报告表底部的总计字段时,我得到正确的值。

这种情况运作良好,但现在用户要求在报告运行时,如果有2013年的年费(以便报告期限为两年或更长),则希望将它们列出在每个客户的时间表条目总数之后单独进行。

显然,我不能再在数据表中使用额外字段,因为年费存在的年数是未知的。

有没有人知道我可以实现这个?

由于

1 个答案:

答案 0 :(得分:0)

我解决了这个问题;为了将来的参考,这是我做的: 我在我的数据表中添加了一个名为RowType的新字段。 在代码隐藏中,我进行两次数据库调用,一次检索时间表条目,另一次检索每家公司的年费。使用它们,我构建用于绑定报表的数据表。包含Timesheet条目的行的RowType字段等于“Project Fees”,而包含年费的行将其设置为“年费”。

然后,我根据新字段在报表上创建了一个额外的RowGroup,并相应地设置其可见性和排序参数,以便在RowType有一个值或另一个值时显示/不显示。

这似乎有效。