以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]分两级统计的问题,急求,谢谢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42422)

--  作者:良木
--  发布时间:2013/11/11 15:53:00
--  [求助]分两级统计的问题,急求,谢谢
求助,各位,我写的代码如下:
DataTables("个人统计").datarows.Clear
Tables("个人统计").StopRedraw
Dim dt As DataTable = DataTables("个人信息")
Dim cList As List(of String) = DataTables("个人信息").GetUniqueValues("","村")
Dim cList2 As List(of String) = DataTables("个人信息").GetUniqueValues("","社")
If cList IsNot Nothing Then
        For Each s As String In cList
        Dim dr As DataRow = DataTables("个人统计").AddNew
        dr("村")=s
        dr("总人数")=dt.Compute("count(姓名)","村=\'" & s & "\'")
        dr("其中女")=dt.Compute("count(姓名)","村=\'" & s & "\' and 性别 = \'女\'")
        dr("党员_总数")=dt.Compute("count(姓名)","村=\'" & s & "\' and 政治面貌 = \'党员\'")
        dr("党员_其中女")=dt.Compute("count(姓名)","村=\'" & s & "\' and 政治面貌 = \'党员\' and 性别 = \'女\'")
        dr("团员_总数")=dt.Compute("count(姓名)","村=\'" & s & "\' and 政治面貌 = \'团员\'")
        dr("团员_其中女")=dt.Compute("count(姓名)","村=\'" & s & "\' and 政治面貌 = \'团员\' and 性别 = \'女\'")
        dr("残疾人数")=dt.Compute("count(姓名)","村=\'" & s & "\' and 身体状况 = \'残疾\'")
        dr("外出务工_人数")=dt.Compute("count(姓名)","村=\'" & s & "\' and 人员去向 like \'*务工*\'")
        dr("外出务工_其中女")=dt.Compute("count(姓名)","村=\'" & s & "\' and 人员去向 like \'*务工*\' and 性别 = \'女\'")
        dr("农村低保_一类")=dt.Compute("count(姓名)","村=\'" & s & "\' and 农村低保 = \'农村一类\'")
        dr("农村低保_二类")=dt.Compute("count(姓名)","村=\'" & s & "\' and 农村低保 = \'农村二类\'")
        dr("农村低保_三类")=dt.Compute("count(姓名)","村=\'" & s & "\' and 农村低保 = \'农村三类\'")
        dr("农村低保_四类")=dt.Compute("count(姓名)","村=\'" & s & "\' and 农村低保 = \'农村四类\'")
        dr("农村低保_无低保")=dt.Compute("count(姓名)","村=\'" & s & "\' and 农村低保 = \'无低保\'")
        dr("合作医疗_已参合")=dt.Compute("count(姓名)","村=\'" & s & "\' and 合作医疗 = \'已参合\'")
        dr("合作医疗_未参合")=dt.Compute("count(姓名)","村=\'" & s & "\' and 合作医疗 = \'未参合\'")
        dr("养老保险_已投保")=dt.Compute("count(姓名)","村=\'" & s & "\' and 养老保险 = \'已投保\'")
        dr("养老保险_未投保")=dt.Compute("count(姓名)","村=\'" & s & "\' and 养老保险 = \'未投保\'")
        dr("养老保险_领取养老金")=dt.Compute("count(姓名)","村=\'" & s & "\' and 养老保险 like \'*领*\'")
    Next
    If cList2 IsNot Nothing Then
        For Each s As String In cList2
            Dim dr2 As DataRow = DataTables("个人统计").AddNew
            dr2("社")=s
            dr2("总人数")=dt.Compute("count(姓名)","社=\'" & s & "\'")
            dr2("其中女")=dt.Compute("count(姓名)","社=\'" & s & "\' and 性别 = \'女\'")
            dr2("党员_总数")=dt.Compute("count(姓名)","社=\'" & s & "\' and 政治面貌 = \'中共党员\'")
            dr2("党员_其中女")=dt.Compute("count(姓名)","社=\'" & s & "\' and 政治面貌 = \'中共党员\' and 性别 = \'女\'")
            dr2("团员_总数")=dt.Compute("count(姓名)","社=\'" & s & "\' and 政治面貌 = \'团员\'")
            dr2("团员_其中女")=dt.Compute("count(姓名)","社=\'" & s & "\' and 政治面貌 = \'团员\' and 性别 = \'女\'")
            dr2("残疾人数")=dt.Compute("count(姓名)","社=\'" & s & "\' and 身体状况 = \'残疾\'")
            dr2("外出务工_人数")=dt.Compute("count(姓名)","社=\'" & s & "\' and 人员去向 like \'*务工*\'")
            dr2("外出务工_其中女")=dt.Compute("count(姓名)","社=\'" & s & "\' and 人员去向 like \'*务工*\' and 性别 = \'女\'")
            dr2("农村低保_一类")=dt.Compute("count(姓名)","社=\'" & s & "\' and 农村低保 = \'农村一类\'")
            dr2("农村低保_二类")=dt.Compute("count(姓名)","社=\'" & s & "\' and 农村低保 = \'农村二类\'")
            dr2("农村低保_三类")=dt.Compute("count(姓名)","社=\'" & s & "\' and 农村低保 = \'农村三类\'")
            dr2("农村低保_四类")=dt.Compute("count(姓名)","社=\'" & s & "\' and 农村低保 = \'农村四类\'")
            dr2("农村低保_无低保")=dt.Compute("count(姓名)","社=\'" & s & "\' and 农村低保 = \'无低保\'")
            dr2("合作医疗_已参合")=dt.Compute("count(姓名)","社=\'" & s & "\' and 合作医疗 = \'已参合\'")
            dr2("合作医疗_未参合")=dt.Compute("count(姓名)","社=\'" & s & "\' and 合作医疗 = \'未参合\'")
            dr2("养老保险_已投保")=dt.Compute("count(姓名)","社=\'" & s & "\' and 养老保险 = \'已投保\'")
            dr2("养老保险_未投保")=dt.Compute("count(姓名)","社=\'" & s & "\' and 养老保险 = \'未投保\'")
            dr2("养老保险_领取养老金")=dt.Compute("count(姓名)","社=\'" & s & "\' and 养老保险 like \'*领*\'")
        Next
    End If
End If
Tables("个人统计").ResumeRedraw


统计出来是
图片点击可在新窗口打开查看此主题相关图片如下:2103.jpg
图片点击可在新窗口打开查看
怎样才能按村统计,每个村下是社啊,请高手给写个编码,谢谢了
[此贴子已经被作者于2013-11-11 22:35:33编辑过]

--  作者:Bin
--  发布时间:2013/11/11 15:54:00
--  
有个例子才好办.
--  作者:良木
--  发布时间:2013/11/11 16:46:00
--  
就是把个人信息表按村、社分类,统计出政治面貌_党员,低保_农村一类,二类,三类,四类,合作医疗、养老保险等人数据
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:农户信息管理.rar



--  作者:Bin
--  发布时间:2013/11/11 16:53:00
--  
你这例子连表结构都不对应.



--  作者:良木
--  发布时间:2013/11/11 17:10:00
--  
这是导入时出了问题,就是把个人信息表如何能按村分类(村下是社)统计相关人员个数


--  作者:有点甜
--  发布时间:2013/11/11 20:32:00
--  
 代码类似这样,楼主参考改一下。

DataTables("个人统计").datarows.Clear
Tables("个人统计").StopRedraw
Dim dt As DataTable = DataTables("个人信息")
Dim cList As List(of String()) = DataTables("个人信息").GetUniqueValues("","村","社")
For Each arys As String() In clist
    Dim dr As DataRow = DataTables("个人统计").AddNew
    dr("村") = arys(0)
    dr("社") = arys(1)
    Dim filter As String = "村=\'" & arys(0) & "\' and 社=\'" & arys(1) & "\'"
    dr("总人数") = dt.Compute("count(姓名)",filter)
Next
Tables("个人统计").ResumeRedraw

--  作者:良木
--  发布时间:2013/11/11 22:10:00
--  
运行不了啊
--  作者:有点甜
--  发布时间:2013/11/11 22:15:00
--  
 我复制代码可以运行,你自己照着改成你自己的东西。
--  作者:良木
--  发布时间:2013/11/11 22:31:00
--  
DataTables("个人统计").datarows.Clear
Tables("个人统计").StopRedraw
Dim dt As DataTable = DataTables("个人信息")
Dim cList As List(of String()) = DataTables("个人信息").GetUniqueValues("","村","社")
For Each arys As String() In clist
    Dim dr As DataRow = DataTables("个人统计").AddNew
    dr("村") = arys(0)
    dr("社") = arys(1)
    Dim filter As String = "村=\'" & arys(0) & "\' and 社=\'" & arys(1) & "\'"
    dr("总人数") = dt.Compute("count(姓名)",filter)
    dr("其中女")=dt.Compute("count(姓名)",filter And "性别 = \'女\'")
    dr("党员_总数")=dt.Compute("count(姓名)",filter And "政治面貌 = \'中共党员\'")
    dr("党员_其中女")=dt.Compute("count(姓名)",filter And "政治面貌 = \'中共党员\' and 性别 = \'女\'")
    dr("团员_总数")=dt.Compute("count(姓名)",filter And "政治面貌 = \'团员\'")
    dr("团员_其中女")=dt.Compute("count(姓名)",filter And "政治面貌 = \'团员\' and 性别 = \'女\'")
    Next
Tables("个人统计").ResumeRedraw
改成这样,运行错误,统计表上只有文庄村  杜湾社 228
我想要       村        社    总人数   其中女  党员    其中女
              文庄村          228       XX       XX       xx
                        杜湾社 228       xx      xx         xx
                        何庄社
             雷庄村            300      xx       xx         xx
                        闫门社  XX       xx       xx        xx
                        魏庄社  xx       xx       xx         xx

这样的效果







--  作者:良木
--  发布时间:2013/11/11 22:34:00
--  
我最上面的代码运行出来的效果是先把所有的村统计,再把所有的社统计

此主题相关图片如下:2103.jpg
按此在新窗口浏览图片
我想要      村        社     总人数    其中女   党员     其中女
              文庄村               228       XX       XX       xx
                        杜湾社      228       xx      xx         xx
                        何庄社
              雷庄村                300      xx       xx         xx
                        闫门社       XX       xx       xx        xx
                        魏庄社      xx       xx       xx         xx
这样的效果,能给修改一下吗?