其实,更符合逻辑的代码应该这样写。
Dim c As Double = 0
Dim s As TimeSpan
For Each h As DataRow In DataTables("业务").DataRows
Dim drs As List(Of DataRow) = DataTables("租息调整表").Select("调整止日 > #" & h("起始日期") & "# And 调整起日 <= #" & h("到期日期") & "#")
Select Case drs.Count
Case 0 '没有匹配
msgbox("请设置租息")
Case 1 '在一个区间里
s = h("到期日期") - h("起始日期")
c = c + s.TotalDays * drs(0)("日租金")
Case Else '在多个区间里
s = drs(0)("调整止日") - h("起始日期") '租期的第一个区间
c = c + s.TotalDays * drs(0)("日租金")
For i As Integer = 1 To drs.Count - 2 '正常按区间满收
s = drs(i)("调整止日") - drs(i)("调整起日")
c = c + s.TotalDays * drs(i)("日租金")
Next
s = h("到期日期") - drs(drs.Count-1)("调整起日") '租期的最后一个区间
c = c + s.TotalDays * drs(drs.Count-1)("日租金")
End Select
h("金额") = c
Next
[此贴子已经被作者于2012-10-24 14:00:52编辑过]