チームごとにx点の最高の結果が必要でした。
同点の結果が存在する場合、ランキングはこの問題を解決しません。だから私はrecordnumber
Access で VBA 関数を作成しrecordnumber
て、ID の変更時にリセットされる を作成しました。
recordnumber <= x
チームごとにポイントを取得する場所を指定して、このクエリをクエリする必要があります。
NB Access はレコード番号を変更します
- レコード番号でフィルタリングされたクエリをクエリするとき
- 一部の結果を除外する場合
- 並び順を変えると
それは私が思っていたことではありません。
一時テーブルを使用し、recordnumbers
キーまたは追加のフィールドをテーブルに保存することで、これを解決しました。
SELECT ID, Points, RecordNumberOffId([ID}) AS Recordnumber
FROM Team ORDER BY ID ASC, Points DESC;
呼び出し間で記憶するために 3 つのモジュール レベル変数を使用します。
Dim PreviousID As Long
Dim PreviousRecordNumber As Long
Dim TimeLastID As Date
Public Function RecordNumberOffID(ID As Long) As Long
'ID is sortgroup identity
'Reset if last call longer dan nn seconds in the past
If Time() - TimeLastID > 0.0003 Then '0,000277778 = 1 second
PreviousID = 0
PreviousRecordNumber = 0
End If
If ID <> PreviousID Then
PreviousRecordNumber = 0
PreviousID = ID
End If
PreviousRecordNumber = PreviousRecordNumber + 1
RecordNumberOffID = PreviousRecordNumber
TimeLastID = Time()
End Function