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
Dim month As Integer = 0
Dim day As Integer = 0
Dim precount As Integer = DataTables("zzjbqk").Compute("count(_Identify)", "调入时间 < #" & kssj & "#")
Dim count As Integer = precount
Dim sum As Integer = 0
Dim drs As List(of DataRow) = DataTables("zzjbqk").Select("调入时间 >= #" & kssj & "# and 调入时间 < #" & kssj.AddYears(1) & "#", "调入时间")
Dim idx = 0
For Each dr As DataRow In drs
idx += 1
If dr("调入时间").month <> month OrElse idx = drs.Count Then '进入了下一个月
If day = 0 Then '上个月只有记录
For i As Integer = 1 To dr("调入时间").month - month -1
sum += count * Date.daysinmonth(kssj.year, i+month)
monavg = monavg + sum / Date.daysinmonth(kssj.year, i+month) '逐月平均人数和
output.show(i & ":" & sum)
sum = 0
Next
Else
ts = Date.daysinmonth(kssj.year, month+1)
If day <> ts Then
sum += count * (ts - day + 1)
End If
monavg = monavg + sum / Date.daysinmonth(kssj.year, month+1) '逐月平均人数和
output.show(month & ":" & sum)
sum = count
End If
month = dr("调入时间").month
day = 0
Else
If dr("工资类型").startswith("机关") AndAlso dr("单位代码").startswith("SZ0306") Then
If dr("调入时间").day <> day Then
sum += count * (dr("调入时间").day - day) + 1
count += 1
day = dr("调入时间").day
Else
count += 1
sum += 1
End If
End If
End If
Next
For i As Integer = month+1 To 12
sum += count * Date.daysinmonth(kssj.year, i)
monavg = monavg + sum / Date.daysinmonth(kssj.year, i) '逐月平均人数和
output.show(i & ":" & sum)
sum = count
Next
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")