Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

求平均值

崔巧芬  发表于:2011-01-16 14:21:24  
复制

老师们好,再帮我看看下面附件中怎么实现这个功能,就是想在“员工”表的“本科其他人员评分”字段中接受本科他人评分的平均分,在“统计分析科”窗体中有他人评分文本框中只是一个人的评分,怎么计算出平均分再保存到表中呢?

非常感谢!

点击下载此附件

 

Top
煮江品茶 发表于:2011-01-16 14:43:22
表涉及好像有问题,缺一个记录每个人对其他人打分的表。

崔巧芬 发表于:2011-01-16 15:03:03

煮江品茶老师,是不是只能通过设置出个保存每个人评分的表来,再通过查询计算出字段间的平均值来,能否实现动态求平均值或者是编个语句实现这个功能呢?如果建表的话觉得也好乱

多谢煮江品茶老师的回复!

谢谢!



煮江品茶 发表于:2011-01-16 15:23:05
连续输入若干人员的打分资料,是可以通过设置一个变量来进行统计的。不过实际工作中,可能要间断的进行考核数据的录入(所谓间断指退出系统),这样的话内存变量就不能保留原来的数据。所以最好还是有一张表来记录打分情况,而且作为历史资料也便于调阅。

崔巧芬 发表于:2011-01-16 16:57:41

好的,谢谢煮江品茶老师的指导!

多谢!



煮江品茶 发表于:2011-01-17 11:16:32

给你写了一个参考示例:

 

 

 

 

 

 

 

点击下载此附件

崔巧芬 发表于:2011-01-17 21:15:52
煮江品茶老师你太好了,帮了我大忙,真是一个好前辈!

崔巧芬 发表于:2011-01-22 15:45:02

煮江品茶老前辈,还是在上面考核系统的例子中,我想在结果的平均分中实现:如果[科长评分]内为空时:平均分=(自评分+互评分+副部长评分+部长评分)/4,否则平均分=(自评分+科长评分+互评分+副部长评分+部长评分)/5,当[职位]="综合管理员"时,平均分=[自评分]*20% + [部长评分]*40%+[互评分]*40%

我在平均分查询中输入了 平均分:IIf([职位]="综合管理员",([自评分]*20 + [部长评分]*40+[互评分]*40)/100,IIf([职位]="科长" And [科长评分]="",([自评分]+[互评分]+[副部长评分]+[部长评分])/4,IIf([职位]<>"综合管理员",([自评分]+[互评分]+[科长评分]+[副部长评分]+[部长评分])/5))),然后在SOL代码中也按照你的例子做了添加修改,这样在平均分查询中的数据视图中显示错误,请问该怎么解决呢?

 



煮江品茶 发表于:2011-01-22 17:15:29

请看以下实例中的“结果查询”:

 

点击下载此附件

煮江品茶 发表于:2011-01-22 17:41:02

如果考核对象的分类进一步复杂的话,可以考虑在结果表中增加平均分字段。这样可以通过修改考核主窗体中“结果导入”按钮下的代码更新各类考核对象的平均分。这样处理可以使得查询不必要写的太复杂。

 

比如可在考核主窗体的模块中写一个自定义子程序:

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 计算平均分



崔巧芬 发表于:2011-01-22 19:31:10
谢谢煮江品茶老师!问题解决啦

总记录:10篇  页次:1/1 9 1 :