Foxtable(狐表)用户栏目专家坐堂 → 如何引用临时表的数据


  共有14171人关注过本帖树形打印复制链接

主题:如何引用临时表的数据

帅哥哟,离线,有人找我吗?
lihe60
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
如何引用临时表的数据  发帖心情 Post By:2011/12/17 10:28:00 [只看该作者]

 

Dim cmd As New SQLCommand
Dim
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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/17 10:28:00 [只看该作者]

因代码写不进去,所以没有附件。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/12/17 13:33:00 [只看该作者]

直接这样不行吗:

Dim b As New SQLCrossTableBuilder("统计表1","订单")
b.Connection Name = "Sale"

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

[此贴子已经被作者于2011-12-17 13:33:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/17 14:00:00 [只看该作者]

以下是引用mr725在2011-12-17 13:33:00的发言:

直接这样不行吗:

Dim b As New SQLCrossTableBuilder("统计表1","订单")
b.Connection Name = "Sale"

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

[此贴子已经被作者于2011-12-17 13:33:49编辑过]

这样不行的,得不到我要的数据。我要先生成一份清单(如最后一天发货的产品清单或各科目成绩最高的学生花名册)即临时表

[此贴子已经被作者于2011-12-17 14:00:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/17 14:22:00 [只看该作者]

班级 姓名 语文       数学 政治
一班 张三 6    
二班 李四 6   11
三班 王五   8

 

 

生成如上表,代码如何写
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:最大值.rar

如有其他的方法也可以,即生成每科成绩最高的学生花名册。

要求:外部数据源,也不要加载数据。

[此贴子已经被作者于2011-12-17 14:28:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/17 14:24:00 [只看该作者]

如有其他的方法也可以,即生成每科成绩最高的学生花名册。

要求:外部数据源,也不要加载数据。

[此贴子已经被作者于2011-12-17 14:27:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/17 15:00:00 [只看该作者]

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      


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/12/17 15:19:00 [只看该作者]

生成统计表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


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/12/17 15:30:00 [只看该作者]

老兄,不能用枚举法的。如果有上千个科目,要举死人的。

还有一个关系的问题,效率要高。

[此贴子已经被作者于2011-12-17 15:43:06编辑过]

 回到顶部
总数 25 1 2 3 下一页