![](/img/trans.png)
[英]SSRS Reporting Services, ASP Report Viewer Rendering With Large Gaps/Spaces
[英]Print a report Multiple times, (SSRS reporting services)
我目前正在研究 SSRS 报告 2008,在 VS 2010 中创建的网站中显示它们,即 ASP.NET 4.0 C#。
我当前的问题是我有一份报告,上面只有一个信头。 并且这个报表页需要根据TextBox页数的值多次打印,如图
稍微描述一下:
当用户在Number of Pages TextBox中输入值并单击此打印按钮图标时,他/她将登陆带有ReportViewer 控件的页面,显示报表。此报表在报表的页眉中只有一个信头,这里该报表将通过单击 ReportViewer 控件的默认打印按钮进行打印。
但是,我无法弄清楚,如何打印此报表页面的次数与No of Pages TextBox中的值一样多(如图所示)
(要在报告中显示的公司信头是通过存储过程从数据库中检索到的)
我尝试了很多谷歌搜索但无济于事。
创建一个新的报告。 该报告应具有1个称为“份数”(或等效值)的参数。 它也应该有一个Tablix,带有1列且没有边框,在单元格内插入一个指向带有信头的报告的子报告。
您的数据集查询应如下所示:
WITH dataset AS (
SELECT 1 AS ID UNION ALL
SELECT ID + 1 FROM dataset WHERE ID < @Param
)
SELECT ID
FROM dataset --edit: obviously I was missing the table
OPTION (MAXRECURSION 0)
然后在您的Tablix上,使用该数据集,按ID分组,然后在组属性中选择“分页符”->“在组的每个实例之间”。
如果我正确理解了您的问题,这应该可以解决问题。
扩展 Joao 的解决方案(感谢您),您也可以通过将计数器表连接到要在数据集中显示的实际数据来完成此操作而无需子报表。
添加 Copies integer 参数,默认值为 1
更新您的数据集以包含计数器并加入
-- Generate a table with @Count rows WITH dataset AS (SELECT 1 AS Copy UNION ALL SELECT Copy + 1 AS Expr1 FROM dataset AS dataset_2 WHERE (Copy < @Copies)) SELECT * FROM dataset INNER JOIN ( -- The primary data to repeat SELECT * FROM MyTable WHERE Id = @IdParam -- End ) d ON 1=1 OPTION (MAXRECURSION 0)
添加/更新您的行组以组 [复制]
将行组分页符设置为“在每个实例之间”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.