【问题标题】:On which page will a record in an Access report get printed?Access 报告中的记录将打印在哪个页面上?
【发布时间】:2017-03-07 16:58:03
【问题描述】:

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

编辑 - 从 cmets 添加了这些详细信息:
报告将是 1-5 页的任何内容。我们将在每页上打印的参考中包含页码,例如“CN001-x”,其中 x 是页码。然后我们将该值存储回数据库中的表中。

报告对数据进行分组,并在每个分组后创建一个新页面,每个页面的记录数不定。

【问题讨论】:

  • 有很多变量可以改变/决定一条记录最终会出现在哪个页面上。报告一般多少页?您能否提供带有分组的查询?最后,为什么您需要知道记录在哪个页面上?所有这些都可以帮助我确定合适的解决方案。
  • 报告的大小为 1-5 页。我们将在每页上打印的参考中包含页码,例如“CN001-x”,其中 x 是页码。然后我们将该值存储回数据库中的一个表中。
  • 每次记录的高度都一样吗?更好的提问方式是,第一个记录的高度是否会与您报告中的第 23 个记录一样高?
  • 是的,它们的高度相同。

标签: ms-access report


【解决方案1】:

通过使用 Count() 的复杂公式,您可以计算出一条记录将落在哪个页面上。例如,如果第一页有 20 条记录,您就会知道第 21 条记录在第二页。由于我看不到您的报告或代码,所以我不得不解释一下。

创建一个计算报表中记录的公式,然后在比较中使用该公式来查看数字是否在 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

【讨论】:

  • 谢谢,但是报告是按组完成的,每个页面会有不同数量的记录。我想我们需要更改基础查询。
  • 或者你可以有非常小的标题部分,在每一页上重复。并且每次渲染时都会将变量增加 1。这样它就会模拟页码。然后在你的连接公式中使用这个变量
  • 这听起来是个好主意。你知道我将如何循环仅显示在该页面上的那些记录吗?
  • 不知道你所说的循环是什么意思。
猜你喜欢
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多