2017-03-07 77 views
1

我在Access 2013中有一个报告,它将查询中的记录分组并将每个组打印到单独的页面。有没有办法在VBA中找出每个记录将打印在哪个页面上?在哪个页面上打印Access报告中的记录?

编辑 - 添加这些细节从评论:
该报告将从1-5页的任何东西。我们将在每页上打印的参考文献中包含页码,例如“CN001-x”其中x将是页码。然后我们将该值存回数据库的表格中。

该报表将分组应用于数据,并在每个组之后创建一个新页面,每个页面将具有可变数量的记录。

+0

有很多变化可能会改变/决定一个记录最终会出现在哪个页面上。报告通常有多少页?你能否提供查询与分组?最后,为什么你需要知道一个记录在哪个页面上?所有这些都可以帮助我确定一个合适的解决方案。 –

+0

该报告将从1-5页开始。我们将在每页上打印的参考文献中包含页码,例如“CN001-x”其中x将是页码。然后我们将该值存回数据库的表格中。 – ChipsLetten

+0

每次记录都是一样的高度吗?更好的方法是,第一个记录的高度是否与报告中的第23条记录一样高? –

回答

0

通过使用一个使用Count()的复杂公式,您可以计算记录将登陆的页面。例如,如果第一页上有二十条记录,那么您会知道第二十一条记录会在第二页上。由于我看不到你的报告或代码,所以不得不解释它。

创建一个计算报告中记录的公式,然后在比较中使用该公式来查看该数字是否落在1-20范围内。如果是这样,请将其赋值为1.然后,只需简单地将该字段与您需要的字段的其他部分连接起来,并且您应该都很好。只需执行下面的操作即可获得您认为需要的迭代次数。如果你知道你的页数永远不会超过7,那么我会停在那里。

IF Count(Field1) <= 20 THEN 
    1 
ELSE IF Count(Field1) > 20 AND Count(Field1) <=40 THEN 
    2 
Else 3 
End IF 
+0

谢谢,但报告是由组完成的,每个页面将有不同数量的记录。我想我们需要更改底层查询。 – ChipsLetten

+0

或者您可以在每个页面上重复使用非常小的标题部分。并且每次渲染都会将变量加1。这样就可以模拟页码。然后在连接公式中使用这个变量 –

+0

这听起来像个好主意。你知道我将如何循环浏览那些页面上显示的记录吗? – ChipsLetten