Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
Dim
cmd As New SQLCommand
Dim b As New SQLCrossTableBuilder("统计表1",dt)
b.HGroups.AddExp("月", "Month(日期)")
b.VGroups.AddExp("年", "Year(日期)")
b.Totals.AddDef("数量")
b.Totals.AddExp("金额","数量 * 单价") '
b.Build
MainTable = Tables("统计表1")
目的:先生成一个临时表dt,即第一段代码;再对刚才生成的临时表dt进行交叉统计。
问题:第二段代码写不进去。请教。
我的做法:我现在是先用第一段代码生成一个临时表dt,再把这个临时表filler到表A,再用第二段代码对表A进行交叉统计。达到了目的,但太耗时。
要求:必须要sql语句生成一个临时表。
直接这样不行吗:
Dim b As New SQLCrossTableBuilder("统计表1","订单")
b.Connection Name = "Sale"
..............
直接这样不行吗:
Dim b As New SQLCrossTableBuilder("统计表1","订单")
b.Connection Name = "Sale"
..............
这样不行的,得不到我要的数据。我要先生成一份清单(如最后一天发货的产品清单或各科目成绩最高的学生花名册)即临时表
班级 | 姓名 | 语文 | 数学 | 政治 |
一班 | 张三 | 6 | ||
二班 | 李四 | 6 | 11 | |
三班 | 王五 | 8 |
| |
下载信息 [文件大小: 下载次数: ] | |
![]() |
如有其他的方法也可以,即生成每科成绩最高的学生花名册。 要求:外部数据源,也不要加载数据。 |
如有其他的方法也可以,即生成每科成绩最高的学生花名册。
要求:外部数据源,也不要加载数据。
Dim b As New SQLCrossTableBuilder("统计表1","数据库")
b.HGroups.AddDef("姓名") '添加客户列用于水平分组
b.HGroups.AddDef("班级") '添加产品列用于垂直分组,并设置了Pattern参数
b.VGroups.AddDef("科目") '添加产品列用于垂直分组,并设置了Pattern参数
'b.VGroups.AddDef("科目") '添加产品列用于垂直分组,并设置了Pattern参数
b.Totals.AddDef("分数",AggregateEnum.max,"分数") '添加数量列用于统计
b.Build '生成统计表
Tables("" & e.Form.name & "_table1").datasource= Tables("统计表1") '打开生成的统计表
生成如下数据
数学 语文 政治
李四 二班 5 6 11
王五 三班 8 5 9
张三 一班 2 6 3
我要的数据是这样的
数学 语文 政治
李四 二班 6 11
王五 三班 8
张三 一班 6
生成统计表1后:
Dim mx1,mx2,mx3 As Double
mx1 = Tables("统计表1").Compute("Max(分数_1)")
mx2 = Tables("统计表1").Compute("Max(分数_2)")
mx3 = Tables("统计表1").Compute("Max(分数_3)")
For Each r As Row In Tables("统计表1").Rows
If r("分数_1") < mx1
r("分数_1") = Nothing
End If
If r("分数_2") < mx2
r("分数_2") = Nothing
End If
If r("分数_3") < mx3
r("分数_3") = Nothing
End If
Next
老兄,不能用枚举法的。如果有上千个科目,要举死人的。
还有一个关系的问题,效率要高。