Foxtable(狐表)用户栏目专家坐堂 → 设计统计公式


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

主题:设计统计公式

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/10 16:14:00 [显示全部帖子]

直接通过代码统计的话,这样:

 

Dim g As New GroupTableBuilder("统计表1", DataTables("材料交货"))
g.Groups.AddDef("客户名称")
g.Totals.AddDef("数量1", "品名1")
g.Totals.AddDef("数量2", "品名2")
g.Totals.AddDef("数量3", "品名3")
g.Totals.AddDef("数量4", "品名4")
g.Totals.AddDef("数量5", "品名5")
g.Totals.AddDef("数量6", "品名6")
g.Totals.AddDef("数量7", "品名7")
g.Totals.AddDef("数量8", "品名8")
g.Build()
MainTable = Tables("统计表1")

 

其实可以用菜单中的分组统计命令直接统计。

另:数量6应该改为数值型

 

 

 

[此贴子已经被作者于2011-3-10 16:13:54编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/10 16:20:00 [显示全部帖子]

其实不用公式的,这种统计直接通过菜单就可以实现,你还可以将设置保存下来,以后只需在菜单中单击一个命令,即可自动完成上述统计。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/10 17:03:00 [显示全部帖子]

你把你要的统计表格式设计好传上来看看。

你的数据表设计得不太规范,这样无法通过菜单统计,只能写代码。

向这样的结构,可能用关联表解决比较恰当,就像订单表和订单明细表的关系。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/10 18:06:00 [显示全部帖子]

易表的长处在“易”,要说灵活,Foxtable要比易表灵活得多。

这样的统计,事先设计好统计表和动态生成统计表,是完全不同的。

 

 


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/10 18:22:00 [显示全部帖子]

不先设计好统计表也行。

你先把数量6这一列改为整数型,在命令窗口执行下面的代码,即可动态生成你需要的统计表:

 

Dim khs As List(of String) = DataTables("材料交货").GetUniqueValues("客户名称 > ''", "客户名称")
Dim pds As List(of String) = DataTables("材料交货").GetUniqueValues("品名1  > ''", "品名1")
Dim dt AS New DataTableBuilder("统计表1")
dt.AddDef("客户", Gettype(String), 32)
For Each pd As String In pds
    dt.AddDef(pd, Gettype(Integer))
Next
dt.Build
Dim tb AS Table = Tables("统计表1")
For Each kh As String In khs
    Dim r As Row = tb.AddNew()
    Dim Sum AS Integer
    r("客户")  = kh
    For Each pd As String In pds
        sum = 0
        For i As Integer = 1 To 8
            sum = sum + DataTables("材料交货").Compute("Sum(数量" & i & ")", "品名" & i & " = '" & pd & "' And 客户名称 = '"  & kh & "'")
        Next
        r(pd) = sum
    Next
Next

[此贴子已经被作者于2011-3-10 18:22:45编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/10 19:08:00 [显示全部帖子]

Dim khs As List(of String) = DataTables("材料交货").GetUniqueValues("客户名称 > ''", "客户名称")
Dim pds As List(of String) = DataTables("材料交货").GetUniqueValues("品名1  > ''", "品名1")
Dim dt AS New DataTableBuilder("统计表1")
dt.AddDef("客户", Gettype(String), 32)
For i As Integer = 2 To 8
    Dim lst As List(of String)  = DataTables("材料交货").GetUniqueValues("品名" & i &  " > ''", "品名" & i)
    For Each nm AS String In Lst
        If pds.Contains(nm) = False
            pds.Add(nm)
        End If
    Next
Next
For Each pd As String In pds
    dt.AddDef(pd, Gettype(Integer))
Next
dt.Build
Dim tb AS Table = Tables("统计表1")
Dim Sum AS Integer
For Each kh As String In khs
    Dim r As Row = tb.AddNew()
    r("客户")  = kh
    For Each pd As String In pds
        sum = 0
        For i As Integer = 1 To 8
            sum = sum + DataTables("材料交货").Compute("Sum(数量" & i & ")", "品名" & i & " = '" & pd & "' And 客户名称 = '"  & kh & "'")
        Next
        r(pd) = sum
    Next
Next
Dim sr As Row = tb.AddNew()
sr("客户") = "合计"
For Each pd As String In pds
    sum = 0
    For Each r AS Row In tb.Rows
        sum = sum + r(pd)
    Next
    sr(pd) = sum
Next

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/11 11:03:00 [显示全部帖子]

说明代码中的表名错了。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/11 12:35:00 [显示全部帖子]

你的文件没有产品销售表的。

 

以你的材料交货表为列,增加一行的代码为:

 

Tables("材料交货").AddNew()


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/11 14:34:00 [显示全部帖子]

呵呵,你做个出错的例子上来,我帮你看看怎么回事。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/3/11 15:12:00 [显示全部帖子]

呵呵,这是因为你在窗口的Click事件加入了代码:

 

Tables("表名").DataTable.Load()

 

显然你的系统没有名称为“表名”的表,删除这样代码就正常了。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:产品销售.table


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