精易论坛

标题: mdb数据库高级表格分类小计与合计 [打印本页]

作者: 罗半夜    时间: 2022-2-14 15:25
标题: mdb数据库高级表格分类小计与合计
本帖最后由 罗半夜 于 2022-2-14 19:44 编辑

对数据源只有一个要求:数据源必须首先排序,最好是用SQL语句查询时排序,分类小计与累计不需要在数据源中进行,数据源只需要用SQL语句排序。
  
子程序名返回值类型公开备 注
子程序读数据库1 分类小计,在只有一条记录时不统计小计
变量名类 型静态数组备 注
句柄整数型 
上一条姓名文本型 
当前姓名文本型 
数量文本型 
金额文本型 
数量小计整数型 
金额小计整数型 
数量合计整数型 
金额合计整数型 
行次整数型 
同类条数整数型 
句柄 = 库.查询 (“SELECT * FROM 测试表 ORDER BY 姓名 DESC”)
库.到首记录 (句柄)
上一条姓名 = 库. (句柄, “姓名”)  ' ----------- 初始值’
行次 = 1
高级表格1.行数 = 1
判断循环首 (库.尾记录后 (句柄))
当前姓名 = 库. (句柄, “姓名”)
数量 = 库. (句柄, “数量”)
金额 = 库. (句柄, “金额”)
数量合计 = 数量合计 + 到整数 (数量)
金额合计 = 金额合计 + 到整数 (金额)
如果真 (上一条姓名 = 当前姓名)
高级表格1.插入行 (, )
高级表格1.置数据 (行次, 0, 1, 到文本 (行次))
高级表格1.置数据 (行次, 1, 1, 当前姓名)
高级表格1.置数据 (行次, 2, 1, 数量)
高级表格1.置数据 (行次, 3, 1, 金额)
行次 = 行次 + 1
同类条数 = 同类条数 + 1
数量小计 = 数量小计 + 到整数 (数量)
金额小计 = 金额小计 + 到整数 (金额)

如果真 (上一条姓名 ≠ 当前姓名)
' 。。。。。。。。。。先写小计行’
如果 (同类条数 > 1)
' 。。。。。。。。。。有两条或两条以上的记录,写小计行,并标识出来’
高级表格1.插入行 (, )
高级表格1.插入行 (, )
高级表格1.置数据 (行次, 0, 1, 到文本 (行次))
高级表格1.置数据 (行次, 1, 1, 上一条姓名 + “  小计”)
高级表格1.置数据 (行次, 2, 1, 数量小计)
高级表格1.置数据 (行次, 3, 1, 金额小计)
高级表格1.置数据 (行次, 4, 1, “共  ”到文本 (同类条数)“  条”)
高级表格1.置单元格背景颜色 (行次, 0, 行次, 高级表格1.列数, #粉红 )
数量小计 = 0
金额小计 = 0
行次 = 行次 + 1
' 。。。。。。。。。。只有一条记录时不写小计行,但要标识出来’
高级表格1.置数据 (行次 - 1, 4, 1, “共  ”到文本 (同类条数)“  条”)
高级表格1.置单元格背景颜色 (行次 - 1, 0, 行次 - 1, 高级表格1.列数, #粉红 )
数量小计 = 0
金额小计 = 0

' 。。。。。。。。。再写当前行’
同类条数 = 0
高级表格1.插入行 (, )
高级表格1.置数据 (行次, 0, 1, 到文本 (行次))
高级表格1.置数据 (行次, 1, 1, 当前姓名)
高级表格1.置数据 (行次, 2, 1, 数量)
高级表格1.置数据 (行次, 3, 1, 金额)
行次 = 行次 + 1
同类条数 = 同类条数 + 1
数量小计 = 数量小计 + 到整数 (数量)
金额小计 = 金额小计 + 到整数 (金额)

库.到后一记录 (句柄)
上一条姓名 = 当前姓名
判断循环尾 ()
库.关闭记录集 (句柄)
' 。。。。。。。。。。写最后的小计行’
如果 (同类条数 > 1)
高级表格1.置数据 (行次, 0, 1, 到文本 (行次))
高级表格1.置数据 (行次, 1, 1, 上一条姓名 + “     小计”)
高级表格1.置数据 (行次, 2, 1, 数量小计)
高级表格1.置数据 (行次, 3, 1, 金额小计)
高级表格1.置数据 (行次, 4, 1, 到文本 (同类条数 + 1))
高级表格1.置单元格背景颜色 (行次, 0, 行次, 高级表格1.列数, #粉红 )
数量小计 = 0
金额小计 = 0
高级表格1.置单元格背景颜色 (行次 - 1, 0, 行次 - 1, 高级表格1.列数, #粉红 )
高级表格1.置数据 (行次 - 1, 4, 1, “共  ”到文本 (同类条数)“  条”)

' 。。。。。。。。写累计行’
高级表格1.置数据 (行次, 0, 1, 到文本 (行次))
高级表格1.置数据 (行次, 1, 1, “累计”)
高级表格1.置数据 (行次, 2, 1, 到文本 (数量合计))
高级表格1.置数据 (行次, 3, 1, 到文本 (金额合计))
高级表格1.置单元格背景颜色 (行次, 0, 行次, 高级表格1.列数, #褐绿 )
' 经实践测试,用计次循环删除空行效果不好,最后几行删除不完全
' ’高级表格_删除空行 (_启动窗口, 高级表格1, 0)
变量循环首 (高级表格1.行数, 1, -1, 行次)
如果真 (到文本 (高级表格1.取数据 (行次, 1)) = “”)
高级表格1.删除行 (行次)

变量循环尾 ()


i支持库列表   支持库注释   
eGrid高级表格支持库

小计.JPG (60.62 KB, 下载次数: 3)

小计.JPG

测试高级表格小计.zip

17.97 KB, 下载次数: 74, 下载积分: 精币 -2 枚


作者: 罗半夜    时间: 2022-2-14 15:48
本帖最后由 罗半夜 于 2022-2-14 15:51 编辑

分类小计与累计不是在MDB数据库或SQL语句中进行,是在写入高级表格时进行的。只需要用SQL语句将数据源排序即可。
作者: xjshuaishuai    时间: 2022-2-14 17:48
谢谢分享!
作者: 杨明煜    时间: 2022-2-14 19:34
真值得学习,感谢!......
作者: 木子李春天    时间: 2022-2-15 20:18
很值得学习  
作者: reveriexue    时间: 2022-2-15 22:26
谢谢分享!

作者: orjg    时间: 2022-2-16 09:16
罗半夜 发表于 2022-2-14 15:48
分类小计与累计不是在MDB数据库或SQL语句中进行,是在写入高级表格时进行的。只需要用SQL语句将数据源排序 ...

还不如在SQL语句中进行吧
作者: ljf97318    时间: 2022-2-17 20:35
支持楼主的分享
作者: ljf97318    时间: 2022-2-17 20:48
这个需要支持和学习
作者: 1347379245    时间: 2022-2-17 21:08
谢谢分享!
作者: ljf97318    时间: 2022-2-22 12:45
支持下楼主的热心分享
作者: fom    时间: 2022-2-26 13:53
谢谢分享!
作者: 晴天大佬    时间: 2022-3-8 11:25
sql直接cha询统计,每一个都统计,这样会不会慢一点?
作者: 罗半夜    时间: 2022-3-8 22:44
本帖最后由 罗半夜 于 2022-3-8 22:49 编辑
晴天大佬 发表于 2022-3-8 11:25
sql直接cha询统计,每一个都统计,这样会不会慢一点?

用SQL语句联合cha询统计,对速度的影响应该不是很明显,但会导致SQL语句很复杂,而且还容易出错,并且需要排序(升序与降序),排序并不能自由切换(要求小计行始终在下方),特别是字段比较多时更容易出错,这是我之前用Access直接完成时体会到的。
作者: ghost12    时间: 2022-3-18 23:01
感谢你的支持,精易有你更精彩
作者: 蓝河笑月    时间: 2022-5-14 11:06
感谢分享  支持开源
作者: lm88818    时间: 2022-5-19 23:14
谢谢分享!
作者: cckj    时间: 2022-6-8 14:34
支持开源~!感谢分享
作者: f15007937680    时间: 2022-10-6 11:17
感谢感谢!!!
作者: 914998915    时间: 2022-11-4 10:03
对数据源只有一个要求:数据源必须首先排序,最好是用SQL语句cha询时排序,分类小计与累计不需要在数据源中进行,数据源只需要用SQL语句排序。
作者: 猎人719    时间: 2022-12-1 08:21
感谢分享  
作者: 蓝河笑月    时间: 2023-3-2 08:56
支持开源~!感谢分享
作者: lm88818    时间: 2023-6-25 11:24
开源精神必须支持~
作者: lm88818    时间: 2024-3-29 14:51
支持开源~!感谢分享
作者: year1970    时间: 2024-3-31 09:55
感谢分享
作者: 蓝河笑月    时间: 2025-5-22 08:23
感谢分享  支持开源




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4