首页> 应用与编程 > ACCESS使用VBA实现列值累加并取得累加阀值的记录

ACCESS使用VBA实现列值累加并取得累加阀值的记录

题目很拗口,主要是想要表达的东西比较曲折,还是以实例来说明比较直观,假设在Access中有以下的表table1。table1是一张成绩表,我想要的结果是:所有人的成绩按着总分(Score)从大到小排列,然后在排列好的表中从上到下累加English/Score列(第1行+第2行+……+第N行的值),当累加值>0.7时,取出第1行到第N行的记录。

NameEnglishFrenceChineseScoreProportion

(English/Score)

Jasmine81401002200.37
Hill7080602100.33
Jay8020801800.44
Tom5050501500.33

VBA的代码思路是:先把Table1按总分(Score)从大到小排列取出来放在记录集中,然后通过循环累加Proportion的值,取出符合条件的行数,最后从记录集中取出所需的内容。

代码如下:

Sub LookupSum()
   Dim rst As Recordset   
   Dim MARK As Double
   Dim values AS Double '阀值
   Dim num As Double    '行数
   Dim qdf As QueryDef  '查询
   Dim strSQL As String
 
   MARK = 0
   num= 0
   values = 0.7
   '从大到小排列取出来放在记录集中
   Set rst = CurrentDb.OpenRecordset(" select * from table1 order by Score desc")
   '循环累加Proportion的值
   Do While Not rst.EOF
      If MARK >= values Then Exit Do
          MARK = MARK + rst! Proportion
          num = num + 1
          rst.MoveNext
   Loop
  '新建一个查询
   strSQL = "select top "  & num & " * from table1 order by Score desc"
   Set qdf = CurrentDb.CreateQueryDef("查询累计比例大于70%的成绩", strSQL)
   DoCmd.OpenQuery qdf.Name
End Sub
分类: 应用与编程 标签: , 浏览量:3,019 次阅读
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.