以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于手工编码进行统计(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25924)

--  作者:yyzlxc
--  发布时间:2012/11/20 10:45:00
--  [求助]关于手工编码进行统计(已解决)
一个案例,要求统计2012年8月份的在册人数及技术等级分布,按照帮助文件的“手工编码进行统计”方法,DataColChanged事件的代码应该如何写,请各位老师指教,谢谢!!

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


[此贴子已经被作者于2012-11-21 11:33:35编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/20 11:05:00
--  
 代码在项目属性那里

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


--  作者:唐尸三摆手
--  发布时间:2012/11/20 11:23:00
--  

\'///统计表datacolchanged事件

Dim dr As DataRow = e.DataRow
Dim dt As DataTable =DataTables("名册")
If e.DataCol.name = "车间" And e.DataRow.IsNull(e.DataCol.name) = False Then
    For Each dc As DataCol In e.DataTable.DataCols
        If dc.name.StartsWith("技术等级") Then
            Dim c As String = dc.name.SubString(dc.Name.IndexOf("_")+1)
            dr(dc.name)= dt.Compute("Count(姓名)", "车间 = \'"& dr("车间") &"\' And 技术等级 = \'"& c &"\' And 离厂日期 is null")
        ElseIf dc.name = "在册人数" Then
            dr(dc.name)= dt.Compute("Count(姓名)", "车间 = \'"& dr("车间") &"\' And 离厂日期 Is null")
        End If
    Next
End If


--  作者:yyzlxc
--  发布时间:2012/11/20 11:24:00
--  
谢谢lin_hailun老师的回复,但是不是我想要的结果。 要求是统计2012年8月份的在册人数及技术等级分布,要去除月初前离厂和月底后进厂的人数(包括技术等级),可以实现吗,还请lin_hailun老师指教,谢谢!!
--  作者:yyzlxc
--  发布时间:2012/11/20 12:13:00
--  
代码修改后,达到预期效果,再次感谢lin_hailun老师的指教。(前提是要将空白的离厂日期填写为当前日期)

Select Case MainTable.Name
    Case "统计"
        MainTable.DataTable.DataRows.Clear
        Dim dt As DataTable = DataTables("名册")
        Dim chejians As List(Of String) = dt.GetUniqueValues("", "车间")
        For Each chejian As String In chejians
            Dim r As Row = MainTable.AddNew
            r("车间") = chejian
            r("在册人数") = dt.Compute("count(_Identify)", "进厂日期 <= #8/31/2012# And 离厂日期 > #8/1/2012# And 车间 = \'" & chejian & "\'")
            For i As Integer = 2 To 6 
                r("技术等级_" & i) = dt.Compute("count(_Identify)", "技术等级 = " & i & " And 车间 = \'" & chejian & "\'And 进厂日期 <= #8/31/2012# And 离厂日期 > #8/1/2012# ")
            Next
        Next
End Select
[此贴子已经被作者于2012-11-20 13:12:21编辑过]

--  作者:yyzlxc
--  发布时间:2012/11/20 13:09:00
--  
还有一个新问题,能否在此基础上再增加一行合计数,请lin_hailun老师指教,谢谢!!
--  作者:lin_hailun
--  发布时间:2012/11/20 16:10:00
--  
以下是引用yyzlxc在2012-11-20 13:09:00的发言:
还有一个新问题,能否在此基础上再增加一行合计数,请lin_hailun老师指教,谢谢!!

如下代码

Select Case MainTable.Name
    Case "统计"
        MainTable.DataTable.DataRows.Clear
        Dim dt As DataTable = DataTables("名册")
        Dim chejians As List(Of String) = dt.GetUniqueValues("", "车间")
        For Each chejian As String In chejians
            Dim r As Row = MainTable.AddNew
            r("车间") = chejian
            r("在册人数") = dt.Compute("count(_Identify)", "进厂日期 <= #8/31/2012# And 离厂日期 > #8/1/2012# And 车间 = \'" & chejian & "\'")
            For i As Integer = 2 To 6
                r("技术等级_" & i) = dt.Compute("count(_Identify)", "技术等级 = " & i & " And 车间 = \'" & chejian & "\'And 进厂日期 <= #8/31/2012# And 离厂日期 > #8/1/2012# ")
            Next
        Next
        Dim nr As Row = MainTable.AddNew
        nr("车间") = "合计"
        nr("在册人数") = MainTable.Compute("Sum(在册人数)")
        For i As Integer = 2 To 6
            nr("技术等级_" & i) = MainTable.Compute("Sum(" & "技术等级_" & i & ")")
        Next
End Select

--  作者:yyzlxc
--  发布时间:2012/11/21 11:33:00
--  
谢谢lin_hailun老师的热情指教,又学了一招,再次衷心感谢!!