设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1708|回复: 15
打印 上一主题 下一主题

[报表] 用数组碰到问题

[复制链接]
1#
发表于 2022-6-6 13:34:41 | 显示全部楼层
压缩包上传附件吧
2#
发表于 2022-6-7 13:34:21 | 显示全部楼层
是否一定要用VBA呢?其实也不一定的。拆解下来,重新设计数据表,也可以使用查询来处理。
按六代分组,每组的最大页存入数组 Intsz(结果同查询5)。每条记录的印页在本人页的基础上加上组的最大页
——使用max建立一个分组查询。再以这个分组查询,使用DSUM根据组别累计。
如果每组最大页有转下页行还要多加一页
——使用IIF函数处理。
至此,基本逻辑理清。接下来处理表和查询。
  • 在原表基础上添加“组别”字段。
  • 根据组别新建分组查询,得到每组的最大页数。
  • 根据2的结果使用DSUM作为累计。
  • 新建一个页数累计数据表,可设置组别为主键。把3的结果追加上去。为了避免重复追加,可以创建一个删除查询。
  • 将4的结果和数据源关联,创建查询更新“印页”字段。
  • 创建宏,把上述的操作查询添加进来,供后续按钮调用。
具体请参考附件。

大多数复杂的逻辑,都是因为表设计不规范所致。至于分组为7、8或者其它值,使用ADO更新“组别”字段即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
发表于 2022-6-8 08:58:41 | 显示全部楼层
付谦 发表于 2022-6-7 21:23
roych:
   感谢你的帮助!我认为不用vba,这件事反而复杂。测试二代码能够解决分组与组别累计,除组最大 ...

累计这个没得解。写循环呗,累计所有不大于该组别的数据。
但问题是,本身你是没有“组别”这个字段的。如何判断何时达到这个组别,是个问题。
如果非要用VBA,数组估计不是那么方便,不妨考虑下字典。
4#
发表于 2022-6-10 02:33:32 | 显示全部楼层
付谦 发表于 2022-6-8 20:46
“组别”字段无关紧要,测试二 f = Int((ww - 1) / 6)语句就是分组用的,0为第一组,1为第二组,2为第三组,类 ...

试试使用递归呗。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 16:37 , Processed in 0.105047 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表