以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求关联统计?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=13267)

--  作者:zerohand
--  发布时间:2011/10/6 11:44:00
--  求关联统计?

哪位大侠可以帮帮忙啊,感谢了!!

 

不知道怎么实现,总提示 总重量重复循环或生成SQL错误

 

==========================

统计源表:销售明细

关联:客户资料

关联名称:客户名称

 

需按客户资料中的[所属区域]进行统计(根据选择日期),即统计各区的销售量及金额 ,统计表格式:参:统计查询--占比分析(需将客户名称换成[所属区域]

=====================================

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


--  作者:czy
--  发布时间:2011/10/6 13:04:00
--  
没办法打开你的项目
--  作者:zerohand
--  发布时间:2011/10/6 13:10:00
--  
以下是引用czy在2011-10-6 13:04:00的发言:
没办法打开你的项目

重新上传,请再试一下,多谢~

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:20111005_1006.zip


--  作者:czy
--  发布时间:2011/10/6 13:16:00
--  
执行什么会提示错误?
--  作者:zerohand
--  发布时间:2011/10/6 13:26:00
--  
以下是引用czy在2011-10-6 13:16:00的发言:
执行什么会提示错误?

SQLCrossTableBuilder 做统计,提示生成SQL语句错误或别名“重量”循环引用,我想肯定是方法不对。

 

=========================================

Dim g As New SQLCrossTableBuilder("统计表1","销售明细")
g.AddTable("销售明细","客户名称","客户资料","客户名称")
g.HGroups.AddDef("所属区域")
g.VGroups.AddDef("产品名称")
g.VGroups.AddDef("产品简称", "{0}_重量")
g.Totals.AddDef("重量")
g.VerticalTotal = True
g.HorizontalTotal = True
g.VerticalProportion = True
g.HorizontalProportion = True
g.Build
MainTable = Tables("统计表1")


--  作者:ybil
--  发布时间:2011/10/6 13:30:00
--  

..........
Dim g As New CrossTableBuilder("统计表1", DataTables("销售明细"))
g.HGroups.AddDef("客户名称","所属区域")
g.VGroups.AddDef("产品名称")
g.VGroups.AddDef("产品简称", "{0}_重量")
g.Totals.AddDef("重量")
g.VerticalTotal = True
g.HorizontalTotal = True
g.VerticalProportion = True
g.HorizontalProportion = True
If Filter>"" Then
    g.filter=Filter \'进行数据过滤
End If
g.Build()
Tables("统计表1").AutoSizeCols(5)

For Each r As Row In Tables("统计表1").Rows
    Dim dr As DataRow = DataTables("客户资料").Find("客户名称 = \'" & r("所属区域") & "\'")
    If dr IsNot Nothing Then
        r("所属区域") =dr("所属区域")
    End If
Next
MainTable = Tables("统计表1")

............

--  作者:zerohand
--  发布时间:2011/10/6 13:54:00
--  
以下是引用ybil在2011-10-6 13:30:00的发言:

..........
Dim g As New CrossTableBuilder("统计表1", DataTables("销售明细"))
g.HGroups.AddDef("客户名称","所属区域")
g.VGroups.AddDef("产品名称")
g.VGroups.AddDef("产品简称", "{0}_重量")
g.Totals.AddDef("重量")
g.VerticalTotal = True
g.HorizontalTotal = True
g.VerticalProportion = True
g.HorizontalProportion = True
If Filter>"" Then
    g.filter=Filter \'进行数据过滤
End If
g.Build()
Tables("统计表1").AutoSizeCols(5)

For Each r As Row In Tables("统计表1").Rows
    Dim dr As DataRow = DataTables("客户资料").Find("客户名称 = \'" & r("所属区域") & "\'")
    If dr IsNot Nothing Then
        r("所属区域") =dr("所属区域")
    End If
Next
MainTable = Tables("统计表1")

............

 

感谢ybil ,可这样统计出来的结果还是没按区域汇总,比如 两笔销售记录的客户区域均为“深圳”,统计出来的结果还是显示两笔,而不是一笔。


--  作者:ybil
--  发布时间:2011/10/6 15:14:00
--  
..............
Dim jb As new SQLJoinTableBuilder("查询表1","销售明细")
jb.AddTable("销售明细","客户名称","客户资料","客户名称")
jb.AddTable("销售明细","产品简称","产品资料","产品简称")
jb.AddCols("日期","所属区域","{产品资料}.产品名称","{销售明细}.产品简称")
jb.AddExp("重量","箱数*{产品资料}.重量 + 销售条数*每条重量")

Dim g As New CrossTableBuilder("统计表1", jb.BuildSQL)
g.HGroups.AddDef("所属区域")
g.VGroups.AddDef("产品名称")
g.VGroups.AddDef("产品简称", "{0}_重量")
g.Totals.AddDef("重量")
g.VerticalTotal = True
g.HorizontalTotal = True
g.VerticalProportion = True
g.HorizontalProportion = True
g.Filter =Filter
g.Build()
Tables("统计表1").AutoSizeCols(5)
MainTable = Tables("统计表1")
...........


--  作者:zerohand
--  发布时间:2011/10/6 16:12:00
--  
以下是引用ybil在2011-10-6 15:14:00的发言:
..............
Dim jb As new SQLJoinTableBuilder("查询表1","销售明细")
jb.AddTable("销售明细","客户名称","客户资料","客户名称")
jb.AddTable("销售明细","产品简称","产品资料","产品简称")
jb.AddCols("日期","所属区域","{产品资料}.产品名称","{销售明细}.产品简称")
jb.AddExp("重量","箱数*{产品资料}.重量 + 销售条数*每条重量")

Dim g As New CrossTableBuilder("统计表1", jb.BuildSQL)
g.HGroups.AddDef("所属区域")
g.VGroups.AddDef("产品名称")
g.VGroups.AddDef("产品简称", "{0}_重量")
g.Totals.AddDef("重量")
g.VerticalTotal = True
g.HorizontalTotal = True
g.VerticalProportion = True
g.HorizontalProportion = True
g.Filter =Filter
g.Build()
Tables("统计表1").AutoSizeCols(5)
MainTable = Tables("统计表1")
...........

谢谢了~~测试了下,加上数据过滤 “g.Filter =Filter” 后,提示附件错误(标准表达式中,数据类型不匹配),在哪里调整啊??

 


--  作者:ybil
--  发布时间:2011/10/6 16:49:00
--  
如是Access数据源,日期用"#"号引起来.