我正在处理我正在处理的报告的问题。我正在尝试设置此报告,以便在打印时选择双面打印选项并正确打印正面和背面的数据。当打印完整的5条记录时,我已经实际工作了。
我有一个3列乘2行Tablix。在该Tablix的单元格A1中,我有另一个Tablix,其中包含将在纸张正面打印的所有数据。在外部Tablix的单元格C3中,我有一个内部Tablix,其中包含背面的所有数据。单元格B2,B3,A1和A2是空的。使用正确的宽度创建B列,以正确格式化正面和背面,以便数据正确排列。
我的行组有一个表达式:= Ceiling(RowNumber(nothing)/ 5),它允许报告完美地输出第1页前5条记录的前端数据,输出前5条记录的后台数据第2页上的记录等,只要记录数是5的倍数。
我的问题是,如果奇数不是5的倍数,我就无法正确分页。例如,如果在第一组5之后剩下4条记录,则前面数据打印前4条记录,然后立即在同一页面上没有分页,它会打印背面数据。
如果在前4个记录之后将其分页,然后输出背面数据,我该怎么办?当然,这需要动态工作,以便无论剩下4,3,2或1条记录,它都会在第一次分组后分页。
我非常感谢能提供的任何帮助。提前谢谢!
答案 0 :(得分:0)
如果您在报告结尾处始终遇到此问题,则可以执行以下操作来解决问题。这可能不是最灵活的解决方案,但它可以完成工作。
在将数据源/数据集发送给报告者之前,只需确定记录总量即可。 DataSet
存在于一个多个DataTables
中,因此这取决于您的构建方式,但使用以下行,您应该能够确定记录/行的总数。
var rCount = myDataSet.Tables[0].Rows.Count();
现在,您可以使用它来正确计算缺失行的数量,并在数据源的末尾添加包含空字段的替换行。
计算缺失行的数量是通过使用C#中的%
运算符取5的模数(在您的特定情况下)来完成的。
要添加空行,您必须只创建空对象,以便在报表中不打印任何内容。为确保此工作完美无缺,您可能必须在Tablix单元格中添加表达式以捕获任何NULL值并用空字符串替换它们。
for (int i = 0; i < rCount % 5; i++ )
{
myDataSet.Tables[0].Rows.Add(new MyObjectClass());
}
如果您的DataSet碰巧有多个DataTable,只需执行与其他表相同的操作。