Foxtable(狐表)用户栏目专家坐堂 → [求助]临时表如何增加合计列与合计行


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

主题:[求助]临时表如何增加合计列与合计行

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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
[求助]临时表如何增加合计列与合计行  发帖心情 Post By:2013/8/4 18:35:00 [只看该作者]

原代码如下
Dim dtb As New DataTableBuilder("输入")
Dim scs As List(of String) = DataTables("表A").GetUniqueValues("","颜色")
Dim cms As List(of String) = DataTables("表A").GetUniqueValues("","尺码")
dtb.AddDef("颜色", Gettype(String), 16)
For Each cm As String In cms
dtb.AddDef(cm, Gettype(Integer), 16)
Next
Tables("窗口1_Table1").DataSource = dtb .BuildDataSource
For Each sc As String In scs
Dim rw As Row = Tables("窗口1_Table1").AddNew
Dim rs As List(of DataRow) = DataTables("表A").Select("颜色 = '" & sc & "'")
rw("颜色") = sc
For Each r As DataRow In rs
rw(r("尺码")) = r("数量")
Next
Next
Tables("窗口1_Table1").AllowEdit = True


请问如何再增加一个 对 列的合计及对行的合计

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:颜色尺码.table


[此贴子已经被作者于2013-8-4 18:43:38编辑过]

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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
Totals.AddDef无效  发帖心情 Post By:2013/8/4 19:19:00 [只看该作者]

试了Totals.AddDef无效, 好像DataTableBuilder   没有此方法.

大家有没有其它变通的方法也行.

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/8/4 19:19:00 [只看该作者]

为何不直接用交叉统计呢

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/8/4 19:28:00 [只看该作者]

AfterLoad事件改为:
Dim g As New CrossTableBuilder("统计表1", DataTables("表A"))
g.HGroups.AddDef("颜色")
g.VGroups.AddDef("尺码")
g.Totals.AddDef("数量", "数量")
g.HorizontalTotal = True
g.VerticalTotal = True
Tables("窗口1_Table1").DataSource  = g.BuildDataSource
[此贴子已经被作者于2013-8-4 19:28:07编辑过]

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


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

 对列的合计如下,在后面添加代码

'添加合计行
Dim t As Table = Tables("窗口1_Table1")
Dim ndr As Row = t.AddNew
ndr(0) = "合计"
For i As Integer = 1 To t.Cols.Count - 1
    ndr(i) = t.Compute("sum(" & t.Cols(i).Name & ")")
Next

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


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

 合计行,合计列代码,如下

Dim dtb As New DataTableBuilder("输入")
Dim scs As List(of String) = DataTables("表A").GetUniqueValues("","颜色")
Dim cms As List(of String) = DataTables("表A").GetUniqueValues("","尺码")
dtb.AddDef("颜色", Gettype(String), 16)
For Each cm As String In cms
    dtb.AddDef(cm, Gettype(Integer), 16)
Next

dtb.AddDef("合计", Gettype(Integer), 16)

Tables("窗口1_Table1").DataSource = dtb .BuildDataSource
For Each sc As String In scs
    Dim rw As Row = Tables("窗口1_Table1").AddNew
    Dim rs As List(of DataRow) = DataTables("表A").Select("颜色 = '" & sc & "'")
    rw("颜色") = sc
    Dim sum As Integer = 0
    For Each r As DataRow In rs
       rw(r("尺码")) = r("数量")
       sum += r("数量")
    Next
    rw("合计") = sum
Next
Tables("窗口1_Table1").AllowEdit = True

Dim t As Table = Tables("窗口1_Table1")
Dim ndr As Row = t.AddNew
ndr(0) = "合计"
For i As Integer = 1 To t.Cols.Count - 1
    ndr(i) = t.Compute("sum(" & t.Cols(i).Name & ")")
Next

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


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

 可以了解下交叉统计


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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2013/8/4 22:02:00 [只看该作者]

以下是引用y2287958在2013-8-4 19:28:00的发言:
AfterLoad事件改为:
Dim g As New CrossTableBuilder("统计表1", DataTables("表A"))
g.HGroups.AddDef("颜色")
g.VGroups.AddDef("尺码")
g.Totals.AddDef("数量", "数量")
g.HorizontalTotal = True
g.VerticalTotal = True
Tables("窗口1_Table1").DataSource  = g.BuildDataSource
[此贴子已经被作者于2013-8-4 19:28:07编辑过]

已试过.有效果,不过生成的表格不能即时编辑,

Tables("窗口1_Table1").AllowEdit = True  后,  可编辑,不过合计不能实时变动


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


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

 做好了,需要修改再说。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:颜色尺码.table


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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2013/8/4 23:13:00 [只看该作者]

以下是引用有点甜在2013-8-4 22:48:00的发言:
 做好了,需要修改再说。

 下载信息  [文件大小:408.0 KB  下载次数:2532]
图片点击可在新窗口打开查看点击浏览该文件:颜色尺码.table

还想请教一下,如何禁止 颜色列,合计列,与合计行被编辑,  另外,我的窗口大小有限,如果内容多时,要移动滚动条才看到合计

能不能单独把颜色列,合计列,合计行冻结.这样无论在何种情况都能实时看到颜色列,合计列,合计行

还有一种情况,如果任一单元格为空时,合计就不显示了.能不能把单元格为空的情况计为0,或把空自动变为0,即不允许出现空

,再厚颜请教一个问题,对于此临时表的颜色与尺码,能不能排序.

比如, 黑白--->白黑;L,M,XL---->XL,M,L

[此贴子已经被作者于2013-8-4 23:45:13编辑过]

 回到顶部
总数 16 1 2 下一页