以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于交叉表增加小计列(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61576) |
-- 作者:yyzlxc -- 发布时间:2014/12/15 11:16:00 -- [求助]关于交叉表增加小计列(已解决) 一段按钮代码,进行当月汇总,想每天增加一个小计列,对“类别”分组进行统计,代码应该如何修改,请各位老师指教,谢谢!! Dim dw As String Dim rq As Date With RibbonTabs("设备管理").Groups("日期单位") dw = .Items("单位").Text rq = .Items("日期").Value End With Dim y As Integer = rq.Year \'当年 Dim m As Integer = rq.Month \'当月 Dim Days As Integer = Date.DaysInMonth(y,m) Dim yc As Date = New Date(y,m,1) \'月初日期 Dim yd As Date = New Date(y,m,Days) \'月底日期 With RibbonTabs("设备管理").Groups("日期单位") dw = .Items("单位").Text rq = .Items("日期").Value End With If dw = "" Then MessageBox.Show("请选择单位","提示") Return Nothing End If Dim sql As String sql = "Select *,1 As 计数,1 As 小计 FROM {设备盘点明细} WHERE 盘点单位 = \'" & dw & "\' And 盘点日期 >= \'"& yc &"\' And 盘点日期 <= \'"& yd &"\'" Dim b As New CrossTableBuilder("设备盘点汇总",sql,"MES") b.HGroups.AddDef("盘点单位") b.HGroups.AddDef("设备名称") b.HGroups.AddDef("使用单位") b.VGroups.AddDef("盘点日期",DateGroupEnum.None) b.VGroups.AddDef("类别") b.Totals.AddDef("计数") b.VerticalTotal = True b.Build() MainTable = Tables("设备盘点汇总") 明细表截图 汇总表截图 [此贴子已经被作者于2014-12-15 18:22:41编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/12/15 11:20:00 -- 需要额外编写代码处理,请上传具体例子。 |
-- 作者:yyzlxc -- 发布时间:2014/12/15 12:15:00 -- 谢谢甜老师的回复,案例上传,多谢指教!! |
-- 作者:有点甜 -- 发布时间:2014/12/15 14:56:00 -- 汗,绕了一个大圈
Dim filter As String = "盘点单位 = \'" & "01-1" & "\' And 盘点日期 >= #"& new date(2014, 6, 1) &"# And 盘点日期 <= #"& date.today & "#"
MainTable = Tables("设备盘点汇总") |
-- 作者:yyzlxc -- 发布时间:2014/12/15 16:50:00 -- 谢谢甜老师的指教,按老师的方法,可以生成带小计的交叉表,但是能否将小计列向后移一列,请指教,谢谢!! Dim sql As String sql = "Select 盘点单位,设备名称,使用单位,盘点日期,类别,1 As 计数 FROM {设备盘点明细} WHERE 盘点单位 = \'"& dw &"\' And 盘点日期 >= \'"& yc &"\' And 盘点日期 <= \'"& yd &"\'union all Select 盘点单位,设备名称,使用单位,盘点日期,\'小计\',1 As 计数 FROM {设备盘点明细} WHERE 盘点单位 = \'"& dw &"\' And 盘点日期 >= \'"& yc &"\' And 盘点日期 <= \'"& yd &"\' group by 盘点单位,设备名称,使用单位,盘点日期" Dim b As New CrossTableBuilder("设备盘点汇总",sql,"MES") b.HGroups.AddDef("盘点单位") b.HGroups.AddDef("设备名称") b.HGroups.AddDef("使用单位") b.VGroups.AddDef("盘点日期",DateGroupEnum.None) b.VGroups.AddDef("类别") b.Totals.AddDef("计数") b.VerticalTotal = True b.Build() |
-- 作者:有点甜 -- 发布时间:2014/12/15 16:57:00 -- Dim sql As String
sql = "Select 盘点单位,设备名称,使用单位,盘点日期,\' \' + 类别 + \' \' As 类别,1 As 计数 FROM {设备盘点明细} WHERE 盘点单位 = \'"& dw &"\' And 盘点日期 >= \'"& yc &"\' And 盘点日期 <= \'"& yd &"\'union all Select 盘点单位,设备名称,使用单位,盘点日期,\'小计\', count(*) As 计数 FROM {设备盘点明细} WHERE 盘点单位 = \'"& dw &"\' And 盘点日期 >= \'"& yc &"\' And 盘点日期 <= \'"& yd &"\' group by 盘点单位,设备名称,使用单位,盘点日期"
Dim b As New CrossTableBuilder("设备盘点汇总",sql,"MES")
b.HGroups.AddDef("盘点单位")
b.HGroups.AddDef("设备名称")
b.HGroups.AddDef("使用单位")
b.VGroups.AddDef("盘点日期",DateGroupEnum.None)
b.VGroups.AddDef("类别")
b.Totals.AddDef("计数")
b.VerticalTotal = True
b.Build()
[此贴子已经被作者于2014-12-15 16:58:41编辑过]
|
-- 作者:yyzlxc -- 发布时间:2014/12/15 18:26:00 -- 谢谢甜老师的耐心帮助,问题解决,但是对《\' \'+类别+\' \'》代码的原理不甚理解,老师能够解释一下吗?谢谢!! |
-- 作者:有点甜 -- 发布时间:2014/12/15 19:02:00 -- 因为交叉统计的时候,是根据汉字拼音排序的加空格是为了用小计放在最后。 |
-- 作者:yyzlxc -- 发布时间:2014/12/15 19:09:00 -- 有点搞明白了,谢谢甜老师的回复!! |