以文本方式查看主题

-  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("设备盘点汇总")

明细表截图


图片点击可在新窗口打开查看此主题相关图片如下:明细表截图.jpg
图片点击可在新窗口打开查看

汇总表截图


图片点击可在新窗口打开查看此主题相关图片如下:汇总截图.jpg
图片点击可在新窗口打开查看




[此贴子已经被作者于2014-12-15 18:22:41编辑过]

--  作者:有点甜
--  发布时间:2014/12/15 11:20:00
--  
  需要额外编写代码处理,请上传具体例子。
--  作者:yyzlxc
--  发布时间:2014/12/15 12:15:00
--  
谢谢甜老师的回复,案例上传,多谢指教!!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目10.foxdb



--  作者:有点甜
--  发布时间:2014/12/15 14:56:00
--  

 汗,绕了一个大圈

 

Dim filter As String = "盘点单位 = \'" & "01-1" & "\' And 盘点日期 >= #"& new date(2014, 6, 1) &"# And 盘点日期 <= #"& date.today & "#"


Dim sql As String
sql = "Select 盘点单位,设备名称,使用单位,盘点日期,类别,1 As 计数 FROM {设备盘点明细} WHERE " & filter
sql += "union all select 盘点单位,设备名称,使用单位,盘点日期,\'小计\',count(*) from {设备盘点明细} where " & filter & " group by 盘点单位,设备名称,使用单位,盘点日期"
Dim b As New CrossTableBuilder("设备盘点汇总",sql)
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("设备盘点汇总")


--  作者: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()


图片点击可在新窗口打开查看此主题相关图片如下:汇总截图2.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间: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
--  
谢谢甜老师的耐心帮助,问题解决,但是对《\' \'+类别+\' \'》代码的原理不甚理解,老师能够解释一下吗?谢谢!!


图片点击可在新窗口打开查看此主题相关图片如下:汇总截图3.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2014/12/15 19:02:00
--  
 因为交叉统计的时候,是根据汉字拼音排序的加空格是为了用小计放在最后。
--  作者:yyzlxc
--  发布时间:2014/12/15 19:09:00
--  
有点搞明白了,谢谢甜老师的回复!!