SQLCrossTableBuilder--统计多个数据表
在运行下面的示例之前,请打开CaseStudy目录下的文件:统计演示.Table
Dim b As New
SQLCrossTableBuilder("统计表1","订单")
b.ConnectionName = "Sale"
b.AddTable("订单","产品ID","产品","产品ID") '添加统计表
b.AddTable("订单","客户ID","客户","客户ID") '添加统计表
b.AddCols("产品","产品名称") '指定产品名称列来自产品表
b.AddCols("客户","客户名称") '指定客户名称列来自客户表
b.HGroups.AddDef("客户名称") '添加客户列用于水平分组
b.VGroups.AddDef("产品名称","产品名称_{0}") '添加产品列用于垂直分组,并设置了Pattern参数
b.Totals.AddDef("数量") '添加数量列用于统计
b.Build '生成统计表
Maintable = Tables("统计表1") '打开生成的统计表
SQL与 FoxTable结合法:
Dim s As String
Dim Arys As List(Of String())
Arys = DataTables("产品").GetUniqueValues("", "产品ID","产品名称")
For Each Ary As String() In Arys
s = s & ",Sum(iif( 产品ID = '" & Ary(0) &"',数量 ,0)) As 产品_" & Ary(1)
Next
s= "SELECT 客户ID As 客户" & s & " FROM {订单} GROUP BY 客户ID"
Tables("窗口1_Table2").Fill(s,"Sale",True)
For Each dr As DataRow In DataTables("窗口1_Table2").DataRows
dr("客户") = DataTables("客户").Find("客户ID = '" & dr("客户") & "'")("客户名称")
Next
[此贴子已经被作者于2011-5-23 8:37:02编辑过]