设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] 合计类别为“01”记录的数量,如何做?

[复制链接]
跳转到指定楼层
1#
发表于 2005-9-30 00:39:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如图,想在“窗体页脚”中加个“文本框”,合计一下“窗体主体”中记录的“类别”为“01”的数量,怎么写?

说明:以上我是用Dsum函数合计窗体数据源表(查询),这次我想请教一下有没有其他更为简单的方法。因为就是合计当前窗体中显示出来记录类别为“01”的数量。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
9#
 楼主| 发表于 2005-10-1 00:51:00 | 只看该作者
2003,呵呵,我水平不高,但是喜欢用版本高的软件。
8#
发表于 2005-9-30 23:42:00 | 只看该作者
以下是引用aydl1014在2005-9-30 15:39:00的发言:



哦,不用了,我学Access都是用在工作中,说句不谦虚的话,是给我们现在用的“业务系统”打补丁。这套程序查询很多,但是真正实用的查询就很少,太多时候需要自己导成EXCEL自已整理。

“业务程序”后台数据库是SQL Server2000,主要数据表中的记录实在很多。我以链接表的方式连过去,所以每次处理时,需要筛选大量数据(以订单表为例,需要先把订单主表和订单明细表通过“订单ID”联合起来,再筛选出本月的订单。要知道,我们一天的订单大概在10000份,每份订单平均有六行记录,即六个品种)。所以我做的东东以这些表为数据源,就会慢一些。如果再在这个窗体上再筛选,就更慢了。

你用的Access 2000还是2003?如果要用链接表,最好用2002以后的版本,因为微软公布过2000存在链接表效率低下的BUG。
7#
 楼主| 发表于 2005-9-30 23:39:00 | 只看该作者
哦,不用了,我学Access都是用在工作中,说句不谦虚的话,是给我们现在用的“业务系统”打补丁。这套程序查询很多,但是真正实用的查询就很少,太多时候需要自己导成EXCEL自已整理。“业务程序”后台数据库是SQL Server2000,主要数据表中的记录实在很多。我以链接表的方式连过去,所以每次处理时,需要筛选大量数据(以订单表为例,需要先把订单主表和订单明细表通过“订单ID”联合起来,再筛选出本月的订单。要知道,我们一天的订单大概在10000份,每份订单平均有六行记录,即六个品种)。所以我做的东东以这些表为数据源,就会慢一些。如果再在这个窗体上再筛选,就更慢了。
6#
发表于 2005-9-30 20:02:00 | 只看该作者
以下是引用aydl1014在2005-9-30 11:59:00的发言:



可能稍快一点,不过感觉不太大。

我新增加了一个分类别汇总查询,从这个查询中取值,稍好一点。

呵呵,想省劲没成功!

谢谢回复!



是的,DSum本身效率就很高,占用的计算时间很少,再怎么优化也不会有太大的感觉。

如果你的程序还是很慢,可以试着发上来(保留少量样本数据),让大家帮你分析一下效率的瓶颈在哪里。
5#
 楼主| 发表于 2005-9-30 19:59:00 | 只看该作者
可能稍快一点,不过感觉不太大。我新增加了一个分类别汇总查询,从这个查询中取值,稍好一点。呵呵,想省劲没成功!谢谢回复!
4#
发表于 2005-9-30 19:54:00 | 只看该作者
以下是引用aydl1014在2005-9-30 10:23:00的发言:

我是这样想的,打开窗体显示的记录是经过筛选得来的,这一步已经筛选过一次了。再在“窗体页脚”中加个文本框筛选数据源表所有记录并挑出类别为“01”的数量进行合计,又重复筛选一次。这样当数据源表记录多的情况下,打开这个窗体时会很慢。

目前这个窗体打开已经很慢了。所以我想打开窗体时筛选一次,然后在这一次筛选出的记录上合计它的“01”类别的数量。

既然=Sum([数量]*([记录类别]="01")*(-1))不比Dsum高,那我还是想想其他方法吧,比如增加“临时表”。

不管如何,先谢谢你!



因为Sum正是从当前记录集中获取数据。如果是你描述的这种情况,报表本身的数据是整个域一个很小的子集,那么Sum的执行效率完全可能超过DSum。你可以尝试一下采用Sum,然后在大数据量环境下进行一个对比测试,看看效果如何。

另外,窗体打开慢并不一定是因为DSum,DSum采用了优秀的算法,我和cg1版主曾经在10万条记录的数量级上进行过测试,发现DSum的执行效率比我们预计中要高得多,我和cg1的结论是在Access应用级别上(百万记录之内),DSum完全够用了,如果程序速度慢,很有可能是别的原因造成的,比方说算法上的问题。

[此贴子已经被作者于2005-9-30 11:56:20编辑过]

3#
 楼主| 发表于 2005-9-30 18:23:00 | 只看该作者
我是这样想的,打开窗体显示的记录是经过筛选得来的,这一步已经筛选过一次了。再在“窗体页脚”中加个文本框筛选数据源表所有记录并挑出类别为“01”的数量进行合计,又重复筛选一次。这样当数据源表记录多的情况下,打开这个窗体时会很慢。目前这个窗体打开已经很慢了。所以我想打开窗体时筛选一次,然后在这一次筛选出的记录上合计它的“01”类别的数量。既然=Sum([数量]*([记录类别]="01")*(-1))不比Dsum高,那我还是想想其他方法吧,比如增加“临时表”。不管如何,先谢谢你!
2#
发表于 2005-9-30 03:49:00 | 只看该作者


=Sum([数量]*([记录类别]="01")*(-1))

但是效率不见得比DSum高,域聚合函数的效率还是很不错的。

[此贴子已经被作者于2005-9-29 19:49:40编辑过]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-2 02:52 , Processed in 0.090542 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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