以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  不知该用哪个统计语句  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23879)

--  作者:zhangc2000
--  发布时间: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
--  发布时间:2012/9/22 15:17:00
--  
 楼主是问 根据日期统计各个地区的进货额?
[此贴子已经被作者于2012-9-22 15:18:01编辑过]

--  作者:zhangc2000
--  发布时间:2012/9/22 15:47:00
--  
对。每个地区都有一些经销商。当统计A地区时,程序将筛选出的经销商代码存入数组sz中。
--  作者:lin_hailun
--  发布时间: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
--  发布时间: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
--  发布时间: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
--  发布时间:2012/9/23 9:44:00
--  

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

 


--  作者:zhangc2000
--  发布时间:2012/9/23 9:57:00
--  

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

 

谢谢