Foxtable(狐表)用户栏目专家坐堂 → 求高效代码


  共有4686人关注过本帖树形打印复制链接

主题:求高效代码

帅哥哟,离线,有人找我吗?
jsq96jg
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
求高效代码  发帖心情 Post By:2013/10/19 9:34:00 [只看该作者]

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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
jsq96jg
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
  发帖心情 Post By:2013/10/19 9:56:00 [只看该作者]

狐爸,有没有办法呀?


 回到顶部
帅哥哟,离线,有人找我吗?
jsq96jg
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
  发帖心情 Post By:2013/10/19 10:03:00 [只看该作者]

这是年末机关事业单位年报统计表上的一个必填数据,多张表上都有,并且还要根据人员的职务层次详细统计。相信好多人都要用的,还烦请狐爸帮忙看看!指点下。

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/19 10:12:00 [只看该作者]

你这个计算个啥呀,就计算个时间?

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
  发帖心情 Post By:2013/10/19 11:41:00 [只看该作者]

算的是逐月平均人数之和

 回到顶部
帅哥哟,离线,有人找我吗?
jsq96jg
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
  发帖心情 Post By:2013/10/19 11:48:00 [只看该作者]

12个月平均人数和:1月:sum(每天的人数)/当月的天数+2月份。。。+12月

 回到顶部
帅哥哟,离线,有人找我吗?
jsq96jg
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:333 积分:2759 威望:0 精华:0 注册:2012/5/8 11:06:00
  发帖心情 Post By:2013/10/19 11:57:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/10/19 13:01:00 [只看该作者]

那我的代码改改就行了呗

 回到顶部
总数 22 1 2 3 下一页