以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何对不定列数中的不同值分别统计  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=24779)

--  作者:chenpan
--  发布时间:2012/10/23 0:36:00
--  [求助]如何对不定列数中的不同值分别统计

如何对不定列数中的不同值分别统计,如图所示,如果有30列,每列的值为1-5中的任何一个,最后统计,1-5这5个数分别在30列中出现的次数。如事假对应2,统计2出现的次数,出勤对应1,休息对应0.
如何统计,请大侠指导!谢谢

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

 以下是数据库和代码

Dim x As Date = e.Form.Controls("DateTimePicker1").value
Dim x1 As Date = e.Form.Controls("DateTimePicker2").value

Dim b As New SQLCrossTableBuilder("统计表1","考勤记录表")
b.C
b.HGroups.AddDef("部门")
b.HGroups.AddDef("姓名")
b.VGroups.AddDef("考勤时间",DateGroupEnum.none)
b.Totals.AddDef("出勤情况")
b.Filter ="[考勤时间] between # " & x & "# and # " & x1 & "#"
Tables("出勤统计表_table1").DataSource =b.BuildDataSource
With DataTables("出勤统计表_table1")
    For Each dc As DataCol In .DataCols
       
        .DataCols(dc.name).Caption = dc.Caption.Split(" ")(0)
        .BuildHeader()
    Next
End With

With DataTables("出勤统计表_Table1").DataCols
    .Add("统计_出勤",Gettype(Integer))
    .Add("统计_事假",Gettype(Integer))
End With


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-10-23 0:52:57编辑过]

--  作者:lin_hailun
--  发布时间:2012/10/23 8:59:00
--  
 代码如下………………

 Dim colsName() AS String = {"部门", "姓名", "统计_出勤", "统计_事假"}
 With DataTables("出勤统计表_table1")
    For Each dr As DataRow In .DataRows
        Dim cq As Integer = 0
        Dim sj As Integer = 0
        For Each dc As DataCol In .DataCols
            If colsName.Contains(dc.Name) = False Then
                Select case dr(dc.Name)
                    case 1
                        cq = cq + 1
                    case 2
                        sj = sj + 1
                End Select
            End If
        Next
        dr("统计_出勤") = cq
        dr("统计_事假") = sj
    Next
End With
--  作者:chenpan
--  发布时间:2012/10/23 11:17:00
--  

谢谢,这方法很好!