感谢红版
Select Case e.Book.TempLate
Case "考勤"
Dim str1 As String = ""
Dim Filter As String = "姓名 = '" & e.DataRow("姓名") & "'"
For Each dr As String In e.DataRow.DataTable.GetValues("早退时间", filter)
str1 &= dr & ","
Next
e.Book.Marks("请假明细") = str1.trim(",")
Dim sum As Double = 0
For Each dr As DataRow In e.DataRow.DataTable.Select("姓名 = '" & e.DataRow("姓名") & "'")
Dim d As Date = dr("加班时间")
sum += d.Hour * 3600 + d.Minute * 60 + d.Second
Next
e.Book.Marks("加班总计") = sum/3600
Dim sum1 As Double = 0
For Each dr As DataRow In e.DataRow.DataTable.Select("姓名 = '" & e.DataRow("姓名") & "'")
Dim d As Date = dr("迟到时间")
sum1 += d.Hour * 3600 + d.Minute * 60 + d.Second
Next
e.Book.Marks("迟到总计") = sum1 /60
Dim sum2 As Double = 0
If e.Book.Marks("迟到总计")< 5 AndAlso e.Book.Marks("迟到总计")>0 Then
sum2 = e.Book.Marks("加班总计")*18-10
Else
sum2 = e.Book.marks("加班总计")*18-(e.Book.Marks("迟到总计")-5)*10-10
End If
e.Book.Marks("加班费") = sum2
End Select
这个加班费:加班总计和迟到总计都为零,加班费理应也为0 为什么统计出来等于40
e.Book.Marks("加班总计") = sum/3600 用round()还是其他的保留两位小数