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