| プロシージャによる順位付け |
|
対象バージョン : 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
改定履歴