プロシージャによる順位付け Hit Counter

対象バージョン : 97, 2000(MDB), 2002(MDB), 2003(MDB), 2007(ACCDB)
最終更新日 : 2007/03/11 (オリジナル作成日:1996/10/12)


概 要

 プロシージャを用いて順位付けを行う方法です。

 クエリーによる順位付けや、サブクエリーによる順位付けでは、レコード数が多く実行速度に問題がある場合に使用して下さい。


手 順

 順位付けを行いたいテーブル "成績" にフィールド "学生番号", "得点", "順位" があるものとします。

 同じ得点の者は同順位とします。


Public Function 順位付け()
Dim db As DAO.DATABASE
Dim rs As DAO.Recordset
Dim iSave As Integer
Dim lCnt As Long
Dim lOrder As Long

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT 得点, 順位 FROM 成績 ORDER BY 得点 DESC;", dbOpenDynaset)
DBEngine(0).BeginTrans
iSave = 999
Do While rs.EOF = False
    rs.Edit
    lCnt = lCnt + 1
    If rs!得点 <> iSave Then
        lOrder = lCnt
        iSave = rs!得点
    End If
    rs!順位 = lOrder
    rs.UPDATE
    rs.MoveNext
Loop
DBEngine(0).CommitTrans
End Function
 

改定履歴


目次へ戻る