Foxtable(狐表)用户栏目专家坐堂 → C版深夜写实例:纵向表如何变成横向表....大家来学习.


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

主题:C版深夜写实例:纵向表如何变成横向表....大家来学习.

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/13 0:33:00 [显示全部帖子]

如果这种格式是固定的,可以直接在表B的DataColChanged事件中设置如下代码。

e.DataRow("A") = DataTables("表A").Compute("sum(第二列)","[第一列] = 'A'")+0
e.DataRow("B") = DataTables("表A").Compute("sum(第二列)","[第一列] = 'B'")+0
e.DataRow("C") = DataTables("表A").Compute("sum(第二列)","[第一列] = 'C'")+0
e.DataRow("D") = DataTables("表A").Compute("sum(第二列)","[第一列] = 'D'")+0
e.DataRow("E") = DataTables("表A").Compute("sum(第二列)","[第一列] = 'E'")+0

然后在表B的MainTableChanged事件中设置。
If Maintable.Name = "表B" Then
   DataTables("表B").DataCols("A").RaiseDataColChanged()
End If

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/13 0:35:00 [显示全部帖子]

如果一定要生成统计表,也可以这样,按钮代码:

Dim cmd As New SQLCommand
Dim 统计表A As DataTable
cmd.CommandText = "Select 第一列 , Sum(第二列) AS 第二列 From {表A} Group by 第一列"
统计表A = cmd.ExecuteReader()

Dim dt As Table = Tables("表B")
Dim dt1 As DataTable = DataTables("表A")
Dim ColNames() As String = {"A","B","C","D","E"}
For Each ColName As String In ColNames
    Dim Value As Integer
    Value = dt1.Compute("sum(第二列)","[第一列] = '" & ColName & "'")
    dt.Rows(0)(ColName) = Value
Next


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/13 0:40:00 [显示全部帖子]

要代码短也可以这样:

Dim cmd As New SQLCommand
Dim 统计表A As DataTable
cmd.CommandText = "Select 第一列 , Sum(第二列) AS 第二列 From {表A} Group by 第一列"
统计表A = cmd.ExecuteReader()
Dim ColNames() As String = {"A","B","C","D","E"}
For Each ColName As String In ColNames
    Tables("表B").Rows(0)(ColName) = DataTables("表A").Compute("sum(第二列)","[第一列] = '" & ColName & "'")+0
Next


 回到顶部