Microsoft Access 掲示板

DCount関数について教えてください! / 1

2 コメント
views
1

順位: DCount("総得点","氏名クエリ","総得点>" & [総得点])+1

 
同着の順位付けは以下のように記述します

順位: DCount("*", "氏名クエリ"
            , "総得点 > " & 総得点 
                          & " OR ( 総得点 = " & 総得点 
                          & "        AND " 
                          & "      Nz(順位決定戦, 0) > " & Nz(順位決定戦, 0) 
                          & " )"
      ) + 1

 
ただし、DCount関数を使った順位付けは 重たい処理になりますから
クエリの表示速度に難があるようでしたら

hatenaさんが公開されている汎用関数 SetSequenceNumber

グループ毎連番を自動入力する関数
クエリで連番を表示する場合、DCount関数やサブクエリを利用する方法はあちこちで紹介されています。 しかし、この方法は自分より前のレコード件数をカウントするというロジックなのでレコード件数が多くなると幾何級数的に重くなります。また、グループ毎に連番を振るという仕様になると、条件式も複雑になってきます。 クエリは使わずにテーブルに連番フィールドを持たせて、そこに VBA で連番を書きこむようにすると高速...
fc2

を、ご自身のデータベースにインポートしておき、
以下のように呼び出し用のコードを記述して、適当なタイミングで実行するほうがいいでしょう
 

Sub sample()
    Rem // 関数の第一引数と第二引数は環境に合わせて変更して下さい
    Call SetSequenceNumber( _
             "順位を書き込むフィールド名", _
             "実際のテーブル名", , _
             "総得点 DESC, 順位決定戦 DESC" _
    )
End Sub
通報 ...