在访问报告列中查找最后一行

Posted

技术标签:

【中文标题】在访问报告列中查找最后一行【英文标题】:Find last Row in Access report Column 【发布时间】:2016-05-11 02:06:12 【问题描述】:

我有一个生成三列的报告,这些列不是数据列,而是记录列。

我需要在每列的末尾添加一条黑色实线。这将在报告中每列的外部完成一个框。

我知道如何在事件Detail_Print 中添加行,但不知道如何检测该记录是任何列中的最后一个。

此外,由于canGrow 打开了其中一个字段,行的高度会有所不同,因此我无法计算行数,然后跟踪当前计数以找出答案。

感谢您的帮助。

编辑 - 附加问题

有没有办法确定详细信息部分的可用高度,例如“页眉底部”和“页脚顶部”之间的缇数,因为我想如果我知道我可以做到该值或可以以某种方式得出它。

【问题讨论】:

如何连接另一行,其键为 99999999 或某个值高于表中所有键的值。并在 DetailPrint 中检测到它,然后将其删除,然后用黑色实线替换它。 (sql= Select .... from ... UNION ALL Select "99999999" ...) @donPablo 只给了我最后一列的最后一行,这是我唯一能得到的,我在每一列的最后一行之后。因此,在数据中增加一行并没有真正的帮助。 【参考方案1】:

我能想到两种解决方案。

1) 将每列中的数据放入单独的子报表中,并简单地将子报表标记为具有实线边框:问题已解决,尽管创建和维护报表会有些混乱。

2) 报告必须有记录源。不要在属性窗口设置记录源,在report_open事件中设置。

在设置记录源之前,确定记录源代表多少行,并将这些信息放在一个变量中,并在Detail_Format事件中,统计行数,使用另一个变量;在行计数器=行数的那一行,放行。

例如;

如果记录源是

SELECT col1, col2, col3 FROM myTable WHERE col1 = 'Purple'

那么行数是

SELECT count(*) FROM myTable WHERE col1 = 'Purple'

【讨论】:

我了解您所建议的实施,但在这种情况下这不起作用,因为这是一个非常长的列表,从第 1 列流到第 2 列到第 3 列,然后到下一页它又开始了。我看不到这些解决方案有效,但无论如何谢谢 @Bullfrog 报告的记录源是什么,记录源的哪些列/字段显示在列中? 查询是记录集, 抱歉耽搁了,A查询是记录源,三列,“First Letter of last Name, Name String, Department。这些列中的每一列都显示在报表上。报表被分组由第一个字母列然后是名称列,以防有人在两个部门。要求报告必须放在一张双面 A4 纸上。这就是多列的原因。名称目前包含在一些行,因为名字非常大。这就是我不能使用仅 x 行添加一行的方法的原因。 我猜你想要页面顶部和底部的列轮廓,而不是最后一列中最后一条记录的打印位置?整个事情听起来非常困难。您可以尝试删除详细信息部分并将其放入没有页眉或页脚的子报表中,然后将子报表放入现有报表的详细信息部分,上面有一行,下面有一行 - 但这仅适用于一页数据,并且如果您在列之间显示行,则它不太可能在最后一行数据之后的最后一列中工作。我想我只能说“祝你好运”!

以上是关于在访问报告列中查找最后一行的主要内容,如果未能解决你的问题,请参考以下文章

Excel行列实用技巧,超级实用,一学就会!

双色球预测算法–红球行列断区法

SQL 行列转换

在列中查找值,填充'直到非空白单元格

MYSQL中查讯咋查第一条记录!

访问 VBA:在列中查找最大数并加 1