思路有问题,不要在Datacolchanged事件计算。
你这样适合直接填充后计算,做个按钮
systemReady = False
Dim f As New Filler
f.SourceTable = DataTables("笔试成绩") '指定数据来源
f.SourceCols = "天数,分组,面试室,是否加权" '指定数据来源列
f.DataTable = DataTables("加权计算") '指定数据接收表
f.DataCols = "天数,分组,面试室,是否加权" '指定数据接收列
f.Filter = "是否加权 = true"
f.ExcludeExistValue = True
f.Fill() '填充数据
Dim zgf1, zgf2, zdf1, zdf2 As Double
Dim dt As DataTable = DataTables("加权计算")
For Each dr As DataRow In dt.DataRows
Dim drs As List(Of DataRow) = DataTables("笔试成绩").Select("天数='" & dr("天数") & "' and 面试室='" & dr("面试室") & "'And 本场面试成绩 Is Not Null", "本场面试成绩")
zgf1 = drs(drs.Count-1)("本场面试成绩")
zgf2 = drs(drs.Count-2)("本场面试成绩")
zdf1 = drs(0)("本场面试成绩")
zdf2 = drs(1)("本场面试成绩")
Dim sum As Double = DataTables("笔试成绩").Compute("sum(本场面试成绩)","天数='" & dr("天数") & "' and 面试室='" & dr("面试室") & "'")
dr("面试室平均值") = Format((sum - zgf1 - zgf2 - zdf1 - zdf2) /( drs.Count - 4),"0.0000")
dr("计数") = DataTables("笔试成绩").Compute("Count(总成绩)","天数 = '" & dr("天数") & "' and 面试室 = '" & dr("面试室") & "'")
Next
For Each dr As DataRow In dt.DataRows
dr("加权平均值") = Format(dt.Compute("avg(面试室平均值)", "天数='" & dr("天数") & "'"),"0.0000")
dr("加权系数") = Format(dr("加权平均值")/dr("面试室平均值"),"0.0000")
Next
systemReady = True