以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求高效代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41434)

--  作者:jsq96jg
--  发布时间:2013/10/19 9:34:00
--  求高效代码

我写的一段按月逐日累计在职人数,再计算当月平均人数,求12月平均数之和的代码,非常低效,1000人时要3秒,400人时要0.3秒

求高效代码!开发版,谢谢!

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


--  作者:jsq96jg
--  发布时间:2013/10/19 9:56:00
--  

狐爸,有没有办法呀?


--  作者:jsq96jg
--  发布时间:2013/10/19 9:59:00
--  
 

以下是我的代码,不知道还有没有更简洁高效的办法,实际应用统计时,再加上其他条件,再放到循环体里,统计一张表需要100秒了

Dim ts As Integer \'当月天数

Dim kssj As Date=#01/01/2013#

Dim monavg As Double \' 月平均人数

Dim ST As Date=Date.NOW

Dim RS As Integer

For m As Integer=0 To 11 \'月

    ts= ts+Date.daysinmonth(kssj.year, kssj.month)

    For t As Integer=1 To Date.daysinmonth(kssj.year,kssj.month) \'从开始时间起逐天计算

        rs=rs+DataTables("zzjbqk").compute("count(姓名)","[工资类型] like \'机关%\' And [单位代码] Like \'SZ0306\' and [调入时间]<#"& kssj &"#") \'逐天累加人数至全月

        kssj = kssj.adddays(1)

    Next

    monavg=monavg+rs/ts\'逐月平均人数和

    ts=0

    If kssj>#12/21/2013# Then \'如果开始时间>截止时间

        Exit For

    End If

    rs=0

Next

MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")


--  作者:jsq96jg
--  发布时间:2013/10/19 10:03:00
--  
这是年末机关事业单位年报统计表上的一个必填数据,多张表上都有,并且还要根据人员的职务层次详细统计。相信好多人都要用的,还烦请狐爸帮忙看看!指点下。
--  作者:blackzhu
--  发布时间:2013/10/19 10:12:00
--  
你这个计算个啥呀,就计算个时间?
--  作者:blackzhu
--  发布时间:2013/10/19 10:40:00
--  
Dim ST As Date=Date.NOW
Dim Val As Double
Dim rs As Double
Dim y As Integer = Date.Today.Year
For m As Integer = 1 To 12
    Dim dt1 As New Date(y, m, 1)
    Dim dt2 As New Date(y, m,Date.DaysInMonth(y,m))
    Val = DataTables("zzjbqk").compute("count(姓名)","[工资类型] like \'机关干部\' And [单位代码] Like \'SZ0306020000\' And [调入时间]>= # " & dt1 & "# And 调入时间<= #" & dt2 & "#") \'逐天累
    Output.Show(dt1.Month & "月份" & "|" & dt1.day & "天"  & Val & "人数")
Next

  是这个意思不?

--  作者:jsq96jg
--  发布时间:2013/10/19 11:41:00
--  
算的是逐月平均人数之和
--  作者:jsq96jg
--  发布时间:2013/10/19 11:48:00
--  
12个月平均人数和:1月:sum(每天的人数)/当月的天数+2月份。。。+12月
--  作者:jsq96jg
--  发布时间:2013/10/19 11:57:00
--  

看来这个问题还真有点棘手


--  作者:blackzhu
--  发布时间:2013/10/19 13:01:00
--  
那我的代码改改就行了呗