设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[报表] 【求助】关于报表分组排序问题 - 请大家帮帮忙(已解决)

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-24 23:37:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 5574916 于 2011-9-26 18:19 编辑

数据库里有一个订单表和一个报表。

请问要如何实现报表中按客户分好组后,再按每一组的销售额排序,也就是按客户的销售额进行排名。



例子:

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-9-25 03:44:44 | 只看该作者
本帖最后由 roych 于 2011-9-25 10:02 编辑

插入一个模块,把下面代码复制进去,然后在来源里输入:=PM([销售额]),具体看附件:
  1. Function PM(Ctl As Control) As Long
  2. Dim Z As Long
  3. '打开分组求和降序排列的记录集
  4. Dim rst As New ADODB.Recordset
  5. rst.Open "SELECT 订单.客户名称, Sum(订单.本单金额) AS 总计 FROM 订单 GROUP BY 订单.客户名称 ORDER BY Sum(订单.本单金额) DESC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  6. '如果数据不多,这两行可以不要(目的在于快速读取数据而已)。
  7. rst.MoveLast
  8. rst.MoveFirst
  9. '由于前面是降序排列,那么位置先后即为名次。
  10. For Z = 1 To rst.RecordCount
  11.     If Ctl.Value = rst(1) Then
  12.         PM = rst.AbsolutePosition
  13.     End If
  14. '排完第一个名次后,把光标移动到下一行,继续循环排名
  15. rst.MoveNext
  16. Next
  17. '关闭记录集和释放内存。
  18. rst.Close
  19. Set rst = Nothing
  20. End Function
复制代码

题外话,这个图片很熟悉,记得在某部国外的电影上(不过忘了叫什么了)看过这个情节。

本帖子中包含更多资源

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

x
3#
 楼主| 发表于 2011-9-25 10:09:49 | 只看该作者
本帖最后由 5574916 于 2011-9-25 10:10 编辑

{:soso__17749219952028839553_2:} 谢谢roych的教程,我还不知道原来可以这样呢!{:soso_e113:}
能不能进一步再实现下图说明的将排名高低从前往后排,我在报表设计里的排序与分组设置,不过要怎么填入按排名数字进行排序呢?

本帖子中包含更多资源

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

x
4#
发表于 2011-9-25 22:08:04 | 只看该作者
如果那样,可能需要修改数据源(或者做子报表)。——而前面的自定义函数可以不用了(用累计=1就够了),详细看附件。

本帖子中包含更多资源

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

x
5#
 楼主| 发表于 2011-9-26 16:34:53 | 只看该作者
roych 发表于 2011-9-25 22:08
如果那样,可能需要修改数据源(或者做子报表)。——而前面的自定义函数可以不用了(用累计=1就够了),详 ...

正解,多谢指教!
6#
发表于 2011-9-26 17:28:14 | 只看该作者
正需要 谢谢分享!
7#
发表于 2011-9-27 03:39:47 | 只看该作者
谢谢分享!
8#
发表于 2011-12-6 17:05:32 | 只看该作者
看一下
9#
发表于 2011-12-6 17:15:29 | 只看该作者
看不明白例
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-10 18:34 , Processed in 0.084472 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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