Office中国论坛/Access中国论坛
标题:
【求助】关于报表分组排序问题 - 请大家帮帮忙(已解决)
[打印本页]
作者:
5574916
时间:
2011-9-24 23:37
标题:
【求助】关于报表分组排序问题 - 请大家帮帮忙(已解决)
本帖最后由 5574916 于 2011-9-26 18:19 编辑
数据库里有一个订单表和一个报表。
请问要如何实现报表中按客户分好组后,再按每一组的销售额排序,也就是按客户的销售额进行排名。
[attach]46754[/attach]
例子: [attach]46756[/attach]
作者:
roych
时间:
2011-9-25 03:44
本帖最后由 roych 于 2011-9-25 10:02 编辑
插入一个模块,把下面代码复制进去,然后在来源里输入:=PM([销售额]),具体看附件:
Function PM(Ctl As Control) As Long
Dim Z As Long
'打开分组求和降序排列的记录集
Dim rst As New ADODB.Recordset
rst.Open "SELECT 订单.客户名称, Sum(订单.本单金额) AS 总计 FROM 订单 GROUP BY 订单.客户名称 ORDER BY Sum(订单.本单金额) DESC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'如果数据不多,这两行可以不要(目的在于快速读取数据而已)。
rst.MoveLast
rst.MoveFirst
'由于前面是降序排列,那么位置先后即为名次。
For Z = 1 To rst.RecordCount
If Ctl.Value = rst(1) Then
PM = rst.AbsolutePosition
End If
'排完第一个名次后,把光标移动到下一行,继续循环排名
rst.MoveNext
Next
'关闭记录集和释放内存。
rst.Close
Set rst = Nothing
End Function
复制代码
[attach]46758[/attach]
题外话,这个图片很熟悉,记得在某部国外的电影上(不过忘了叫什么了)看过这个情节。
作者:
5574916
时间:
2011-9-25 10:09
本帖最后由 5574916 于 2011-9-25 10:10 编辑
{:soso__17749219952028839553_2:} 谢谢roych的教程,我还不知道原来可以这样呢!{:soso_e113:}
能不能进一步再实现下图说明的将排名高低从前往后排,我在报表设计里的排序与分组设置,不过要怎么填入按排名数字进行排序呢?
[attach]46759[/attach]
作者:
roych
时间:
2011-9-25 22:08
如果那样,可能需要修改数据源(或者做子报表)。——而前面的自定义函数可以不用了(用累计=1就够了),详细看附件。[attach]46761[/attach]
作者:
5574916
时间:
2011-9-26 16:34
roych 发表于 2011-9-25 22:08
如果那样,可能需要修改数据源(或者做子报表)。——而前面的自定义函数可以不用了(用累计=1就够了),详 ...
正解,多谢指教!
作者:
yanghua1900363
时间:
2011-9-26 17:28
正需要 谢谢分享!
作者:
joyark
时间:
2011-9-27 03:39
谢谢分享!
作者:
jedtang
时间:
2011-12-6 17:05
看一下
作者:
jedtang
时间:
2011-12-6 17:15
看不明白例
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3