以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助 统计表问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=45169)

--  作者:若水三千
--  发布时间:2014/1/17 12:16:00
--  求助 统计表问题
我想生成如下统计表 应该如何做呢  我现在的做法是 增加一个表  然后 设置了如下代码 可是非常耗时Dim dt As Table = Tables("表A")
dt.Filter="[类别]=\'服装\' Or [类别]=\'木器\'"
Dim s As Integer= dt.Rows.Count
dt.Filter="[类别]=\'服装\'"
Dim a As Integer = dt.Rows.Count
dt.Filter="[类别]=\'木器\'"
Dim b As Integer = dt.Rows.Count
dt.Filter="[种类]=\'医院\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim c As Integer = dt.Rows.Count
dt.Filter = "[罪名] Like \'*毒*\' Or [罪名] Like \'*枪*\' Or [罪名] Like \'黑社会\'"
Dim d As Integer = dt.Rows.Count
dt.Filter = "[犯罪类型] = \'财产型\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim n As Integer = dt.Rows.Count
dt.Filter = "[犯罪类型] = \'暴力型\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim f As Integer = dt.Rows.Count
dt.Filter = "[犯罪类型] = \'淫欲型\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim t As Integer = dt.Rows.Count
dt.Filter = "[罪名] Like \'*职务*\' Or [罪名] Like \'*贪污*\' Or [罪名] Like \'挪用\'"
Dim y As Integer = dt.Rows.Count
dt.Filter = "[处遇级别] = \'一级严管\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim q As Integer = dt.Rows.Count
dt.Filter = "[处遇级别] = \'二级严管\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim w As Integer = dt.Rows.Count
dt.Filter = "[处遇级别] = \'普管\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim i As Integer = dt.Rows.Count
dt.Filter = "[处遇级别] = \'二级宽管\' And [类别] <> \'释放\' And [类别] <> \'调走\'"
Dim o As Integer = dt.Rows.Count
Dim p As Integer = Date.Today.Year
Dim dt1 As New Date(p, 1, 1)
Dim dt2 As New Date(p, 12, 31)
Dim dt3 As Table = Tables("调动明细表")
dt3.Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "# And [调动类型] = \'调入\'"
Dim s1 As Integer = dt3.Rows.Count
dt3.Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "# And [调动类型] = \'调出\'"
Dim s5 As Integer = dt3.Rows.Count
dt3.Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "# And [调动类型] = \'转监狱\'"
Dim s6 As Integer = dt3.Rows.Count
Dim dt5 As New Date(2013, 1, 1)
Dim dt6 As New Date(2013, 12, 31)
dt3.Filter = "日期 >= #" & dt5 & "# And 日期 <= #" & dt6 & "# And [调动类型] = \'调入\'"
Dim s2 As Integer = dt3.Rows.Count
dt3.Filter = "日期 >= #" & dt5 & "# And 日期 <= #" & dt6 & "# And [调动类型] = \'调出\'"
Dim s3 As Integer = dt3.Rows.Count
dt3.Filter = "日期 >= #" & dt5 & "# And 日期 <= #" & dt6 & "# And [调动类型] = \'转监狱\'"
Dim s4 As Integer = dt3.Rows.Count
If e.DataRow("统计项目")="全体在册人数" Then
e.DataRow("统计值")= s & "人"
ElseIf e.DataRow("统计项目")="服装在册人数" Then
e.DataRow("统计值")= a & "人"
e.DataRow("环比")= "占总人数比例为" & Format(a/s,"00.0%")
ElseIf e.DataRow("统计项目")="木器在册人数" Then
e.DataRow("统计值")= b & "人"
e.DataRow("环比")= "占总人数比例为" & Format(b/s,"00.0%")
ElseIf e.DataRow("统计项目")="住院人数" Then
e.DataRow("统计值")= c & "人"
ElseIf e.DataRow("统计项目")="三涉人员人数" Then
e.DataRow("统计值")= d & "人"
e.DataRow("环比")= "占总人数比例为" & Format(d/s,"00.0%")
ElseIf e.DataRow("统计项目")="财产型罪犯" Then
e.DataRow("统计值")= n & "人"
e.DataRow("环比")= "占总人数比例为" & Format(n/s,"00.0%")
ElseIf e.DataRow("统计项目")="暴力型罪犯" Then
e.DataRow("统计值")= f & "人"
e.DataRow("环比")= "占总人数比例为" & Format(f/s,"00.0%")
ElseIf e.DataRow("统计项目")="淫欲型罪犯" Then
e.DataRow("统计值")= t & "人"
e.DataRow("环比")= "占总人数比例为" & Format(t/s,"00.0%")
ElseIf e.DataRow("统计项目")="职务类罪犯" Then
e.DataRow("统计值")= y & "人"
e.DataRow("环比")= "占总人数比例为" & Format(y/s,"00.0%")
ElseIf e.DataRow("统计项目")="一级严管" Then
e.DataRow("统计值")= q & "人"
e.DataRow("环比")= "占总人数比例为" & Format(q/s,"00.0%")
ElseIf e.DataRow("统计项目")="二级严管" Then
e.DataRow("统计值")= w & "人"
e.DataRow("环比")= "占总人数比例为" & Format(w/s,"00.0%")
ElseIf e.DataRow("统计项目")="普管" Then
e.DataRow("统计值")= i & "人"
e.DataRow("环比")= "占总人数比例为" & Format(i/s,"00.0%")
ElseIf e.DataRow("统计项目")="二级宽管" Then
e.DataRow("统计值")= o & "人"
e.DataRow("环比")= "占总人数比例为" & Format(o/s,"00.0%")
ElseIf e.DataRow("统计项目")="当年调入人数" Then
e.DataRow("统计值")= s1 & "人"
ElseIf e.DataRow("统计项目")="2013年调入人数" Then
e.DataRow("统计值")= s2 & "人"
ElseIf e.DataRow("统计项目")="2013年调出人数" Then
e.DataRow("统计值")= s3 & "人"
ElseIf e.DataRow("统计项目")="2013年转监狱人数" Then
e.DataRow("统计值")= s4 & "人"
ElseIf e.DataRow("统计项目")="当年调出人数" Then
e.DataRow("统计值")= s5 & "人"
ElseIf e.DataRow("统计项目")="当年转监狱人数" Then
e.DataRow("统计值")= s6 & "人"
End If
图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看

--  作者:y2287958
--  发布时间:2014/1/17 13:05:00
--  
这样肯定低效
上个例子吧

--  作者:若水三千
--  发布时间:2014/1/17 15:57:00
--  

大哥 项目压缩完了 40多兆啊  上传不了啊  能否就这个给我看看呢


--  作者:Bin
--  发布时间:2014/1/17 15:58:00
--  
做个例子,不用把整个项目传上来.
--  作者:若水三千
--  发布时间:2014/1/17 16:13:00
--  
我正在上传项目 马上完事了, 模块太多 分离不出来啊  正好帮我系统看看
--  作者:Bin
--  发布时间:2014/1/17 16:15:00
--  
整个系统一大坨发过来,反而无法解决问题.
--  作者:若水三千
--  发布时间:2014/1/17 16:22:00
--  

我已经发上去了,关键分离不出来  您帮我看看 我的系统存在哪些问题 好吗  谢谢了


--  作者:lsy
--  发布时间:2014/1/17 16:23:00
--  

开发版,呵呵。

爱莫能助。


--  作者:若水三千
--  发布时间:2014/1/17 16:24:00
--  

为什么呢