Foxtable(狐表)用户栏目专家坐堂 → [求助]关于交叉表增加小计列(已解决)


  共有3756人关注过本帖树形打印复制链接

主题:[求助]关于交叉表增加小计列(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]关于交叉表增加小计列(已解决)  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/15 11:20:00 [只看该作者]

  需要额外编写代码处理,请上传具体例子。

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/12/15 12:15:00 [只看该作者]

谢谢甜老师的回复,案例上传,多谢指教!!

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



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By: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
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/12/15 18:26:00 [只看该作者]

谢谢甜老师的耐心帮助,问题解决,但是对《' '+类别+' '》代码的原理不甚理解,老师能够解释一下吗?谢谢!!


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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/15 19:02:00 [只看该作者]

 因为交叉统计的时候,是根据汉字拼音排序的加空格是为了用小计放在最后。

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/12/15 19:09:00 [只看该作者]

有点搞明白了,谢谢甜老师的回复!!

 回到顶部