Reporting services SSRS修复了Tablix/在下面添加空行
如何在SSRS中固定表大小? 我试过这个 但是,我关心的是,如果数据行小于5,如何在报告中添加空行,例如,在报告中可以容纳15行。我希望动态显示它,而不是通过静态方式插入新行。 与中一样,我们并不总是知道将有多少数据行。 我可以考虑使用表达式设置行可见性。 但是,我不太确定,我想了解更多。 另一种替代方法可能是使用存储过程??我也想知道更多关于它的事情。 如果您能对此事有任何见解,我将不胜感激。Reporting services SSRS修复了Tablix/在下面添加空行,reporting-services,Reporting Services,如何在SSRS中固定表大小? 我试过这个 但是,我关心的是,如果数据行小于5,如何在报告中添加空行,例如,在报告中可以容纳15行。我希望动态显示它,而不是通过静态方式插入新行。 与中一样,我们并不总是知道将有多少数据行。 我可以考虑使用表达式设置行可见性。 但是,我不太确定,我想了解更多。 另一种替代方法可能是使用存储过程??我也想知道更多关于它的事情。 如果您能对此事有任何见解,我将不胜感激。 感谢我曾经应用逻辑,在需要设计发票或信函的地方添加额外的行,并且应该始终跨越整个页面,而不考虑细节行
感谢我曾经应用逻辑,在需要设计发票或信函的地方添加额外的行,并且应该始终跨越整个页面,而不考虑细节行。然而,由于各种问题,我很快改变了我的方法。如果您也正在创建信函或发票,请继续阅读;我不固定表的大小,但是我固定报表的布局。这样,即使行数更少或更多,SSRS也能正确处理数据。解释如下: 假设您正在创建一个宽度为8.5英寸、高度为11英寸的字母。假设您从四面留出了0.25英寸的边界;这样你就有了8英寸的身体宽度和10.5英寸的身高。页眉留1.5英寸,页脚留1英寸,高度为10.5英寸。这样你的身高就只有8英寸了。明确地将主体高度固定为8英寸。一旦完成此操作,SSRS了解到它必须生成一个10.5英寸的页面,而不考虑来自放置在主体中的表格的细节线。我希望这有帮助。干杯
另外,这种方法只能在PDF输出上给出预期结果。在这个答案中,最大行数是5,因为15到一点长,数据行数是3 目标输出: *我只有3个数据,所以其余两行应该是空的,因为最大行是5 解决方案:
1.首先创建一个表。如果需要,添加标题/列名
2.在表中引用数据集(右键单击表的左上角,然后选择Tablix属性)
为了限制表中显示的数据数量,我就是这样做的。
- 最简单的方法是在sql查询中使用
选择前5名或前15名,以确保始终获得表中显示的确切记录数
希望您现在能从中了解如何在报告中完成此任务。@bot的答案是壁橱。在web上找到后,我偶然发现了一篇文章,但您必须使用存储过程(仅tablix使用单独的数据集),它计算出要在tablix中填充的行数,以达到您想要的结果。 我不记得确切的URL参考 存储过程示例:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[uspPurchaseLines]
(
--@InInvoiceNbr int
@InLinesPerPage int
)
AS
DECLARE @TotalRows int
DECLARE @Remainder int
DECLARE @NumPages int
DECLARE @NextPageRows int
set @TotalRows= 0
SELECT
ROW_NUMBER() OVER( ORDER BY P_id)as InvoiceRow,
CusID,
P_id,
Inv_No,
P_Desc,
Del_date,
Qty,
Pack_size,
U_Prize,
Amt
into #tempInvoice
FROM Purchase_Details
SET @TotalRows= @@ROWCOUNT
IF @TotalRows=0
BEGIN
WHILE @TotalRows < @InLinesPerPage -- Add Blank Rows will generate blank invoice.
BEGIN
SET @TotalRows= @TotalRows+1
INSERT #tempInvoice
(InvoiceRow,
CusID,
P_id,
Inv_No,
P_Desc,
Del_date,
Qty,
Pack_size,
U_Prize,
Amt
)
VALUES
(@TotalRows
--,@InInvoiceNbr
,''
,''
,0
,''
,NULL
,0
,''
,0
,0
)
END
END
ELSE
BEGIN
SET @Remainder = @TotalRows%@InLinesPerPage -- get remainder
IF @Remainder !=0
BEGIN
-- Get the current page increase by 1 becasue we have a remainder.
SET @NumPages = @TotalRows/@InLinesPerPage +1
SET @NextPageRows = @NumPages * @InLinesPerPage
WHILE @TotalRows < @NextPageRows -- Add Blank Rows
BEGIN
SET @TotalRows= @TotalRows+1
INSERT #tempInvoice
(InvoiceRow,
CusID,
P_id,
Inv_No,
P_Desc,
Del_date,
Qty,
Pack_size,
U_Prize,
Amt
)
VALUES
(@TotalRows
--,@InInvoiceNbr
,''
,''
,0
,NULL
,''
,0
,''
,0
,0
)
END
END
END
SELECT * from #tempInvoice order by InvoiceRow asc
return
将ANSI_空值设置为OFF
去
将带引号的U标识符设置为OFF
去
创建过程[dbo]。[uspPurchaseLines]
(
--@InInvoiceNbr int
@InLinesPerPage int
)
作为
声明@TotalRows int
声明@余数int
声明@NumPages int
声明@NextPageRows int
设置@TotalRows=0
挑选
(按P_id排序)上的行号()作为发票行,
库西德,
P_id,
投资编号:,
P_Desc,
德鲁日期,
数量,
包装尺寸,
U_奖,
金额
进入临时发票
从购买详情
设置@TotalRows=@@ROWCOUNT
如果@TotalRows=0
开始
而@TotalRows<@InLinesPerPage--添加空行将生成空白发票。
开始
设置@TotalRows=@TotalRows+1
插入#临时发票
(发票行,
库西德,
P_id,
投资编号:,
P_Desc,
德鲁日期,
数量,
包装尺寸,
U_奖,
金额
)
价值观
(@TotalRows)
--,@InInvoiceNbr
,''
,''
,0
,''