Select Case e.DataCol.Name
Case "开始日期","结束日期"
Dim dr,dr1 As DataRow
dr = e.DataRow
If dr.IsNull("开始日期") OrElse dr.IsNull("结束日期") Then
dr("请假天数") = Nothing
Else
Dim n1,n2,n3 As Double
Dim d1,d2,d3,d5 As Date
d1 = dr("开始日期")
d2 = dr("结束日期")
n1 = (Cdate(format(d2,"yyyy/M/d")) - Cdate(format(d1,"yyyy/M/d"))).TotalDays
If n1 <1 Then
dr("请假天数") = Round2((d2 - d1).TotalDays*2.61818,3)
ElseIf n1 <2 Then
d3 = Format(d1,"HH:MM")
d5 = #16:30#
n2 = (d5-d3).TotalDays*26.1818/9.1666
d3 = #07:20#
d5 = Format(d2,"HH:MM")
n2+ = (d5-d3).TotalDays*26.1818/9.1666
dr("请假天数") = Round2(n2,1)
Else
For n2 = 1 To n1 -1
d3= d1.AddDays(n2)
dr1=DataTables("法定假期").Find("日期=#" & format(d3,"M/d/yyyy") & "#")
If d3.DayOfWeek<>6 AndAlso d3.DayOfWeek<> 0 AndAlso dr1 Is Nothing Then
n3+= 1
End If
Next
d3 = Format(d1,"HH:MM")
d5 = #16:30#
n2 = (d5-d3).TotalDays*26.1818/9.1666
d3 = #07:20#
d5 = Format(d2,"HH:MM")
n2+ = (d5-d3).TotalDays*26.1818/9.1666
dr("请假天数") = Round2(n2+n3,1)
End If
End If
End Select
比如:开始日期是 2014/09/03 7:20 结束日期是 2014/09/04 16:30 请假天数是 2.2
如果是:开始日期是 2014/09/04 7:20 结束日期是 2014/09/04 16:30 请假天数是 1
请指点代码错在哪里?谢谢!
[此贴子已经被作者于2014-1-15 11:29:05编辑过]