Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
菜鸟foxtable 发表于:2009/1/12 23:04:00
假设有表A,
经过统计后得出统计表A,
表B为固定表,
怎么才能把统计表A的数据写入表B相应的空格,而缺少的项目则自动为0??

表A
  A     2
   A    3
   B    2
   B    4
   D    3
统计表A
  A    5 
   B    6
   D    3

表B
   A B    C    D     E  
                   
[此贴子已经被作者于2009-1-13 8:29:24编辑过]
2楼
czy 发表于: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
3楼
czy 发表于: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

4楼
czy 发表于: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

5楼
菜鸟foxtable 发表于:2009/1/13 8:28:00
图片点击可在新窗口打开查看C版必胜,申请加精!!!
谢谢C版,举一反三,问题迎刃而解,收藏做为示例了...图片点击可在新窗口打开查看
6楼
易服 发表于:2009/1/13 9:48:00
收藏精典
共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.