Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services SSRS修复了Tablix/在下面添加空行_Reporting Services - Fatal编程技术网

Reporting services SSRS修复了Tablix/在下面添加空行

Reporting services SSRS修复了Tablix/在下面添加空行,reporting-services,Reporting Services,如何在SSRS中固定表大小? 我试过这个 但是,我关心的是,如果数据行小于5,如何在报告中添加空行,例如,在报告中可以容纳15行。我希望动态显示它,而不是通过静态方式插入新行。 与中一样,我们并不总是知道将有多少数据行。 我可以考虑使用表达式设置行可见性。 但是,我不太确定,我想了解更多。 另一种替代方法可能是使用存储过程??我也想知道更多关于它的事情。 如果您能对此事有任何见解,我将不胜感激。 感谢我曾经应用逻辑,在需要设计发票或信函的地方添加额外的行,并且应该始终跨越整个页面,而不考虑细节行

如何在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属性)

  • 在“常规”下,选择所需数据集的“数据集名称”下拉列表,然后单击“确定”
  • 在数据行中,以正常方式添加所需的数据
  • 现在,在数据行的最左侧,右键单击下面的>插入行>外部组
  • 这样做5次。这是目标输出。

  • 现在在组外的第一排。在最左边的最右键单击>行可见性。在表达式上添加以下内容

  • 在其他外部行上也执行此操作,但值应为:
  • =第二行的IIF(CountRows()<3,False,True)-> =第三行的IIF(CountRows()<4,False,True)-> =第四行的IIF(CountRows()<5,False,True)-> =第五行的IIF(CountRows()<6,False,True)->

    *可见性将根据组中的行数隐藏组外的行。即使数据集为空,默认行数也始终为5。在您的情况下,您可以在组外添加15个高度相同的空白行,并为每个行添加可见性条件

    更新:

    为了限制表中显示的数据数量,我就是这样做的。

    • 最简单的方法是在sql查询中使用
      选择前5名或前15名,以确保始终获得表中显示的确切记录数
    另一种方法是在表中使用过滤器

  • 我在sql查询中添加了RowCount列,以统计我拥有的所有记录数
  • 在报告上,右键单击表格左上角>Tablix属性>过滤器
  • 然后我输入这个值来限制表中显示的数据数量


    希望您现在能从中了解如何在报告中完成此任务。

    @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
    ,''