以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何引用临时表的数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=15231) |
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 10:28:00 -- 如何引用临时表的数据 Dim cmd As New SQLCommandDim dt As DataTable Dim cmb As WinForm.ComboBox cmd.CommandText = "SELECT DISTINCT 客户 From {订单}" dt = cmd.ExecuteReader() cmb = e.Form.Controls("ComboBox1") cmb.ComboList= dt.GetComboListString("客户")
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语句生成一个临时表。 [此贴子已经被作者于2011-12-17 10:32:47编辑过]
|
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 10:28:00 -- 因代码写不进去,所以没有附件。 |
||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2011/12/17 13:33:00 -- 直接这样不行吗: Dim b As New SQLCrossTableBuilder("统计表1","订单") .............. [此贴子已经被作者于2011-12-17 13:33:49编辑过]
|
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 14:00:00 -- 以下是引用mr725在2011-12-17 13:33:00的发言:
直接这样不行吗: Dim b As New SQLCrossTableBuilder("统计表1","订单") .............. [此贴子已经被作者于2011-12-17 13:33:49编辑过] 这样不行的,得不到我要的数据。我要先生成一份清单(如最后一天发货的产品清单或各科目成绩最高的学生花名册)即临时表 [此贴子已经被作者于2011-12-17 14:00:50编辑过]
|
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 14:22:00 --
[此贴子已经被作者于2011-12-17 14:28:30编辑过]
|
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 14:24:00 -- 如有其他的方法也可以,即生成每科成绩最高的学生花名册。 要求:外部数据源,也不要加载数据。 [此贴子已经被作者于2011-12-17 14:27:48编辑过]
|
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 14:50:00 -- Dim b As New SQLCrossTableBuilder("统计表1","数据库")
b.HGroups.AddDef("科目") \'添加客户列用于水平分组 b.HGroups.AddDef("班级") \'添加产品列用于垂直分组,并设置了Pattern参数 b.VGroups.AddDef("姓名") b.Totals.AddDef("姓名",AggregateEnum.max,"分数") \'添加数量列用于统计 b.Build \'生成统计表 Tables(e.Form.name & "_table1").datasource= Tables("统计表1") \'打开生成的统计表 这个代码没有反应 |
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 15:00:00 -- Dim b As New SQLCrossTableBuilder("统计表1","数据库")
生成如下数据 数学 语文 政治 李四 二班 5 6 11 我要的数据是这样的 数学 语文 政治 李四 二班 6 11 |
||||||||||||||||||||||||||||||
-- 作者:mr725 -- 发布时间:2011/12/17 15:19:00 -- 生成统计表1后:
|
||||||||||||||||||||||||||||||
-- 作者:lihe60 -- 发布时间:2011/12/17 15:30:00 -- 老兄,不能用枚举法的。如果有上千个科目,要举死人的。 还有一个关系的问题,效率要高。 [此贴子已经被作者于2011-12-17 15:43:06编辑过]
|