效率问题,建议用sql语句来做,参考代码
'日期转换
Dim rq As Date = Today()
'删除加班补休填报所有行
DataTables("在册名单").DeleteFor("[编号] Is Not Null ")
MainTable= Tables("在册名单")
Dim cmd As new SQLCommand
cmd.CommandText = "Select d.*, c.入监日期, c.离监日期 from {名册清单} As c inner join (Select b.编号, b.监区, b.单位, b.变动日期 from (Select 编号,max(变动日期) As 变动日期 from {变动日期} group by 编号) As a inner join {变动日期} As b on a.编号 = b.编号 And a.变动日期 = b.变动日期) As d on c.编号 = d.编号" _
& " where " & "入监日期 <= #" & rq & "# And 离监日期 > #" & rq & "#"
Dim f As New Filler
f.SourceTable = cmd.ExecuteReader
f.DataTable = DataTables("在册名单") '指定数据接收表
f.Fill() '填充数据
Tables("在册名单").Sort = "单位,编号"
Tables("在册名单").AutoSizeCols()
Tables("在册名单").Cols.Frozen = 4
Tables("在册名单").ListMode = True
With Tables("在册名单") '返回最末行
.Position = .Rows.Count - 1
End With
'DataTables("在册名单").Save()