Han*_*nho 9 sql reporting-services
我正在尝试创建一个发票类型报告,其中我有一个标题,主体与表(包括总计部分)和页脚.
我得到的问题是,主体中的表高度取决于从我的SPROC返回的行数,因此如果没有太多数据,该表将占据页面中间的一小部分"总计"和"免责声明"在页面底部附近没有结束(理想情况下,想把它放在页脚的上方).
我已经看到了解决这个问题的指南,使用在SPROC中添加空行(空)行的一般方法,强制表大于预期,从而强制总计和免责声明行靠近页面底部.
我已经实现了这个解决方案但是有一些问题.
然而,这种方法的问题在于逻辑只能假设表中的每一行只占用1行(即简短的描述,因此该行不会溢出到下一行).一旦行有多行,行的高度就会改变,并且由于高度不是1行的倍数(即单行的大小为1,双行应该是大小2,而是大小为1.5或者其他),i不能考虑我应该在SPROC中添加多少行.
我尝试了另一种方法,其中我需要的行与主表分开(这本身就给我带来问题 - 无法计算报告中的总数但我想我可以通过计算SPROC本身的总数来解决这个问题)并隐藏直到最后一页.
这种方法很好,除了使用这种方法,空白空间总是显示出来,阻止表格扩展到该区域.
我已经包含了一个指向imgur的链接来描述我当前的问题,这个问题应该更容易理解.

必须有一种更简单的方法来强迫桌子占据整个空间.
小智 6
所有这些都可以在报表设计中实现.这就是你所知道的:
因此,您可以计算页面上剩余空间的大小:P - ((C*R)+ S + F + H)
当我解决我的问题时,我意识到当页面上剩余的空间太小而无法容纳页脚时,我需要两个"垫片"; 垫片1填充在页面1的其余部分,而垫片2是第2页的可用空间 - P - (S + F + H).
因此,您需要在报告中使用隐藏的部分来执行高度计算,并在任何其他细节行下方的间隔符中使用两个细节行.
我在GitHub上创建了一个演示解决方案,它显示了这个"pin-to-bottom"功能,以及重置组的页码,数据驱动的页眉/页脚,标签翻译和国际格式(页面大小,数字格式等) ).
有关销售发票5的详细信息,请参阅.
最后,我选择了一个非常接近我需要的解决方案,并且涉及使用隐藏元素。(类似于丹·安德鲁斯的建议 - 但满足了我的需要)
首先,我将总计包含在报告的页脚中,以便它始终位于底部。
如下所示:
在小计页脚中,我放置了一条消息“在下一页继续”,这也是一个隐藏字段 - 这样我就可以在显示超过 1 页的任何报告上显示此消息(因此用户知道有超过 1 页)报告页面,因此空白看起来不那么糟糕)。
为了隐藏总计字段,我在“隐藏”属性中有以下表达式:
=iif(Globals!PageNumber=Globals!TotalPages,false,true)
Run Code Online (Sandbox Code Playgroud)
对于“继续”字段:
=iif(Globals!PageNumber=Globals!TotalPages,true,false)
Run Code Online (Sandbox Code Playgroud)
现在的问题是,由于页脚无法访问报表正文中的表格,因此页脚不知道表格中汇总的值是什么。
为了解决这个问题,我创建了一个“总计”部分,它是表格的一部分,用于执行页脚上需要显示的所有计算。
现在页脚包含总计,总计字段始终显示在底部,无论表格有多大(这是我最初的问题 - 页脚被放置在它想要的任何地方),并有一个空白的小权衡非最后一页上的空间。我在那里添加了“在下一页继续”消息,这表明报告还有更多页面,因此看起来好像正在使用空白区域。
这是一个单页示例:
这是一个多页示例: