Foxtable(狐表)用户栏目专家坐堂 → 不知该用哪个统计语句


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

主题:不知该用哪个统计语句

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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
不知该用哪个统计语句  发帖心情 Post By:2012/9/22 14:55:00 [只看该作者]

1、我希望实现如下统计:

对一个地区多个经销商每个月的进货额进行统计,得到平均值。

有两个表:经销商基本信息表(代码、名称)和进货表(代码、月份、进货额),两表以(代码)列相关联。

我学习了帮助文件,仍然不知道应该采用分组统计还是交叉统计?(我感觉分组统计就是一维表,交叉统计是二维表)

 

2、我试了一下分组统计的例子,但不知道怎样将两个表的关联性体现出来。第二行执行不了,表达方式不对,但为什么?

Dim b As New GroupTableBuilder("统计表1",DataTables("进货额"))
b.Filter = "[企业代码] =  sz() " '从(基本信息表)找出来的企业代码存放在sz()数组中,这一行肯定错了,但不知道用什么方法来代替?
b.Groups.AddDef("进货日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
b.Groups.AddDef("结算日期","月") '添加日期列用于分组,并用"月"代替原名称
b.Totals.AddDef("进货额") '对数量进行统计
b.Build '生成统计表

请给与帮助。

 

谢谢


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/22 15:17:00 [只看该作者]

 楼主是问 根据日期统计各个地区的进货额?
[此贴子已经被作者于2012-9-22 15:18:01编辑过]

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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2012/9/22 15:47:00 [只看该作者]

对。每个地区都有一些经销商。当统计A地区时,程序将筛选出的经销商代码存入数组sz中。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/22 15:53:00 [只看该作者]

 哦哦,明白。

 '处理一下数组
 dim data as String = ""
 for each s as String in sz
     data = data &  s & ","
 next

 data = data.trim(",")

 b.Filter = "[企业代码] in (" & data & ")"

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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2012/9/22 17:10:00 [只看该作者]

我试了您的方法,统计不出来。但您的意思我明白了。是不是我的数组存放有问题?请给与指点。

Dim dq As String

dq =  e.Form.controls("选择地区").text       

Dim n As Integer

If DataTables("基本信息").find("[所属地区] = '"& dq &"'") IsNot Nothing Then 
   drs = DataTables("基本信息").Select("[所属地区] = '"& dq &"'") 
   n = drs.count
   Dim sz(n) As String
   Dim i As Integer = 0
   For Each dr As DataRow In drs
      sz(i) = dr("企业代码")
      i = i + 1             
   Next
   Dim b As New GroupTableBuilder("统计表1",DataTables("进货额"))
   Dim data As String = ""
   For Each s As String In sz
     data = data & s & ","
   Next
   data = data.trim(",")
   b.Filter = "[企业代码] in (" & data & ")"

   b.Groups.AddDef("进货日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
   b.Groups.AddDef("进货日期","月") '添加日期列用于分组,并用"月"代替原名称
   b.Totals.AddDef("进货额") '对数量进行统计
   b.Build '生成统计表
   MainTable = Tables("统计表1") '打开生成的统计表          

End If

 

谢谢


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/22 17:23:00 [只看该作者]

 hello,改成下面这样。

Dim dq As String

dq =  e.Form.controls("选择地区").text      

Dim n As Integer

If DataTables("基本信息").find("[所属地区] = '"& dq &"'") IsNot Nothing Then
   drs = DataTables("基本信息").Select("[所属地区] = '" & dq & "'")
   Dim ids As String = ""
   For Each dr As DataRow In drs
      ids = idx & dr("_Identify") & ","
   Next
   ids.Trim(",")

   Dim b As New GroupTableBuilder("统计表1",DataTables("进货额"))
 
   b.Filter = "_Identify in (" & ids & ")"
  
   b.Groups.AddDef("进货日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
   b.Groups.AddDef("进货日期","月") '添加日期列用于分组,并用"月"代替原名称
   b.Totals.AddDef("进货额") '对数量进行统计
   b.Build '生成统计表
   MainTable = Tables("统计表1") '打开生成的统计表         

End If

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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2012/9/23 9:44:00 [只看该作者]

我试了上述方法,还是统计不出来。我感觉是否是Filter语句有问题,好像不支持如下格式:b.Filter = "[企业代码] = A001,A010,A134"这样的格式。

 


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


加好友 发短信
等级:幼狐 帖子:175 积分:1849 威望:0 精华:0 注册:2012/4/18 11:30:00
  发帖心情 Post By:2012/9/23 9:57:00 [只看该作者]

已经解决。只要在ids两旁加上单引号即可实现。

 

谢谢


 回到顶部