Report VFP 8.0报告中的总页数是否可以通过数据分组重置?

Report VFP 8.0报告中的总页数是否可以通过数据分组重置?,report,visual-foxpro,Report,Visual Foxpro,我有一个报告(使用VFP 8.0),其中包含按发票号分组的数据,我需要通过更改发票号来重置总页数 我没有这样做,因为_pagetotal将始终返回所有选定发票的总页数 请给我一些建议 根据描述,您想要的似乎是我之前的评论。。。每个发票都有自己的X页或Y页上下文,其中一些“组”的页面比其他组多。要执行所需操作,通常需要生成两次报告。一次运行并捕获每个组末尾的页面数。第二审是“终审”。下面是一个简单的示例,介绍如何执行此操作 创建查询结果,但在读写游标中添加一列“Of page”(或表示每“组”页数

我有一个报告(使用VFP 8.0),其中包含按发票号分组的数据,我需要通过更改发票号来重置总页数

我没有这样做,因为_pagetotal将始终返回所有选定发票的总页数


请给我一些建议

根据描述,您想要的似乎是我之前的评论。。。每个发票都有自己的X页或Y页上下文,其中一些“组”的页面比其他组多。要执行所需操作,通常需要生成两次报告。一次运行并捕获每个组末尾的页面数。第二审是“终审”。下面是一个简单的示例,介绍如何执行此操作

创建查询结果,但在读写游标中添加一列“Of page”(或表示每“组”页数的任何内容)

SELECT YourIDGroup, OtherColumns, 000 as OfPages;
    FROM YourTable;
    ORDER BY 1;
    INTO CURSOR C_YourReportCursor readwrite


REPORT FORM TmpPages

REPORT FORM TmpPages preview  (or to printer)
接下来,在您的程序中,使用一个函数“捕获”组页脚处的页码,无论您当前的ID是什么

FUNCTION CatchOfPages
   LPARAMETERS CurrentID, LastPg

   UPDATE DBF( "C_YourReportCursor" );
      SET OfPages = LastPg;
      WHERE YourIDGroup = CurrentID

   */ Return empty space so nothing is actually printed in the report
   RETURN ""
ENDFUNC 
现在,诀窍来了。在报告中,根据发票的ID设置数据组。在组标题中,不使用_pageno和_pagetotal执行第x页或第y页,而是使用_pageno和光标的“of page”列。。。由于第一个过程将通过上面的函数调用更新其正确值,并在第一次生成报告时设置为无输出窗口或打印机,因此只需在后台运行

现在,在组页脚的底部,添加一个textbox控件(就像任何其他数据字段输出一样),并设置其表达式=带有相应参数的函数调用。。。例:

CatchOfPages( YourIDGroup, _PageNo )
它将使用组的最后一页的实际页码对临时游标(或结果表)进行更新,并更新关联发票ID组的所有记录,因此即使第1页也知道其页数=2、3、4或其他

要隐藏/屏蔽报告的第一个实例,使其不被看到,请将其隐藏在另一个窗口中,例如

DEFINE WINDOW WinTempReport FROM 0, 0 TO 1, 1
REPORT FORM YourReport IN WINDOW WinTempReport
RELEASE WINDOWS WinTempReport

然后将您的报告转换为正常输出。

是您想要的,如下所示:您有一堆要打印的发票。其中,每张发票的“页数”可能不同。在每一张发票上,您希望有如第1页(共3页)、第2页(共3页)、第3页(共3页)、第1页(共2页)、第2页(共2页)和第1页(共4页),等等的发票。您好,谢谢您的帮助!你的建议很有效!为了不在第一次显示报告,我应该使用哪个命令?我试着将报告表单TmpPages NoConsole,它不会计算总页数。。。请帮忙!就像上面所说的,报告形式是你的报告,不需要打印、预览,什么都不需要。。只需运行报告。它基本上会在后台运行并生成所有页面。第二个实例包括要打印或预览的输出方向。它已经有了每个ID组的最终页数谢谢您的快速回复。我不确定这是否是由于我的vfp设置,它不会在后台运行,而是在我的屏幕上显示所有报告。这就是为什么我在表格中加入了“报表tmpages NoConsole”。在原始解决方案的底部添加了报表屏蔽。嗨,安德里亚,仅供参考。在类似这样的支持论坛中,其他搜索问题的人有礼貌地找到“有效”的答案。因此,当您返回到您的问题并找到有效的答案时,每个答案的向上/向下计数器下应该有一个复选框。单击该按钮表示“这是有效的解决方案”。然后,在将来,其他人可以跳转到给定的解决方案。