如果考核对象的分类进一步复杂的话,可以考虑在结果表中增加平均分字段。这样可以通过修改考核主窗体中“结果导入”按钮下的代码更新各类考核对象的平均分。这样处理可以使得查询不必要写的太复杂。
比如可在考核主窗体的模块中写一个自定义子程序:
Sub 计算平均分()
Dim rs0 As New ADODB.Recordset
Dim ssql0 As String
Dim i as Long
Dim str as String
ssql0 = "select * from 结果 where 考核ID=" & Me.考核ID
rs0.Open ssql0, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
For i= 1 To rs0.RecordCount
str=Dlookup("职位","职位","职位ID=" & Dlookup("职位ID","员工","员工ID=" & rs0!员工ID))
select case str
case "科长"
rs0!平均分=Round((nz(rs0!自评分)+nz(rs0!互评分)+nz(rs0!副部长评分)+nz(rs0!副部长评分))/4,2)
case "科员"
rs0!平均分=Round((nz(rs0!自评分)+nz(rs0!科长评分)+nz(rs0!互评分)+nz(rs0!副部长评分)+nz(rs0!副部长评分))/5,2)
case "综合管理员"
rs0!平均分=Round((nz(rs0!自评分)*0.2+nz(rs0!互评分)*0.4+nz(rs0!副部长评分)*0.4),2)
end select
rs0.Update
rs0.MoveNext
Next
rs0.Close
Set rs0 = Nothing
end Sub
然后在“导入结果”的按钮事件代码的最后用以下方式调用该子程序:
Call 计算平均分