以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60769)

--  作者:Lc
--  发布时间:2014/12/1 9:28:00
--  统计

Dim sql As String  = "Select  学期,班级,学生姓名 From {缴费信息} WHERE  学期 = \'" & e.form.Controls("上学期").text & "\'and 缴费项目 = \'学费\'"
Dim sq2 As String  = "Select  a.学期,b.班级,a.学生姓名 From {缴费信息} a inner join {缴费信息} b on (a.学生编号 = b.学生编号) where b.学期 = \'" & e.form.Controls("上学期").text & "\' and a.学期 = \'" & e.form.Controls("下学期").text & "\' and a.缴费项目 = \'学费\'and b.缴费项目 = \'学费\'"
       Dim bd1 As New CrossTableBuilder("统计表1",sql, "数据库")
       Dim dt1 As fxDataSource
       bd1.HGroups.AddDef("班级") \'根据班级分组
       bd1.VGroups.AddDef("学期","{0}_学生数")   \'添加产品列用于垂直分组
       bd1.Totals.AddDef("学生姓名",AggregateEnum.Count,"学生数")
       bd1.VerticalTotal = True
       dt1 = bd1.BuildDataSource()

       Dim bd2 As New CrossTableBuilder("统计表2",sq2, "数据库")
       Dim dt2 As fxDataSource
       bd2.HGroups.AddDef("班级") \'根据班级分组
       bd2.VGroups.AddDef("学期","{0}_老生报名数")   \'添加产品列用于垂直分组
       bd2.Totals.AddDef("学生姓名",AggregateEnum.Count,"老生报名数")
       bd2.VerticalTotal = True
       dt2 = bd2.BuildDataSource()
    dt1.Combine("班级",dt2,"班级") \'将销售统计数据组合到进货统计数据
    Tables("分析_Table1").DataSource = dt1

With DataTables("分析_Table1").DataCols  \'用表达式列计算库存数据
    .Add("老生没报数",Gettype(Integer), "IsNull([?],0) - IsNull([?],0)")  ‘第一列为:{0}_学生数,第二列为:{0}_老生报名数
End With

列名应该怎样引用,请指点,谢谢!

[此贴子已经被作者于2014-12-1 9:32:45编辑过]

--  作者:Bin
--  发布时间:2014/12/1 9:30:00
--  
前面用 as 命名好列名 然后下面就用这个名字引用

利用 select a.列1 as 支出 

 .Add("老生没报数",Gettype(Integer), "IsNull([支出],0)")

--  作者:Lc
--  发布时间:2014/12/1 9:34:00
--  
列名是动态的
--  作者:有点甜
--  发布时间:2014/12/1 9:36:00
--  
 具体例子说明问题,需要额外处理
--  作者:Lc
--  发布时间:2014/12/1 9:38:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20141130173906.png
图片点击可在新窗口打开查看

学期是动态


--  作者:有点甜
--  发布时间:2014/12/1 9:40:00
--  
 直接取文本框的值,拼凑成列名
--  作者:有点甜
--  发布时间:2014/12/1 9:41:00
--  
.Add("老生没报数",Gettype(Integer), "IsNull([" & e.form.Controls("上学期").text  & "],0) - IsNull([" & e.form.Controls("下学期").text  & "],0)")  
--  作者:Lc
--  发布时间:2014/12/1 10:17:00
--  

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


--  作者:有点甜
--  发布时间:2014/12/1 10:22:00
--  

Dim sql As String  = "Select  学期,班级,学生姓名 From {缴费信息} WHERE  学期 = \'" & e.form.Controls("上学期").text & "\'"
Dim sq2 As String  = "Select  a.学期,b.班级,a.学生姓名 From {缴费信息} a inner join {缴费信息} b on (a.学生姓名 = b.学生姓名) where b.学期 = \'" & e.form.Controls("上学期").text & "\' and a.学期 = \'" & e.form.Controls("下学期").text & "\'"
Dim bd1 As New CrossTableBuilder("统计表1",sql, "数据库")
Dim dt1 As fxDataSource
bd1.HGroups.AddDef("班级") \'根据班级分组
bd1.VGroups.AddDef("学期","{0}_学生数")   \'添加产品列用于垂直分组
bd1.Totals.AddDef("学生姓名",AggregateEnum.Count,"学生数")
bd1.VerticalTotal = True
dt1 = bd1.BuildDataSource()

Dim bd2 As New CrossTableBuilder("统计表1",sq2, "数据库")
Dim dt2 As fxDataSource
bd2.HGroups.AddDef("班级") \'根据班级分组
bd2.VGroups.AddDef("学期","{0}_老生报名数")   \'添加产品列用于垂直分组
bd2.Totals.AddDef("学生姓名",AggregateEnum.Count,"老生报名数")
bd2.VerticalTotal = True
dt2 = bd2.BuildDataSource()
dt1.Combine("班级",dt2,"班级") \'将销售统计数据组合到进货统计数据
Tables("分析_Table1").DataSource = dt1
With DataTables("分析_Table1").DataCols  \'用表达式列计算库存数据
    .Add("老生没报数",Gettype(Integer), "IsNull([学生姓名_1],0) - IsNull([学生姓名_11],0)")
End With


--  作者:Lc
--  发布时间:2014/12/1 10:28:00
--  
谢谢!有点甜老师