ACCESSは、同一グループという処理に関しては、Excelよりも楽です。
当然、データベースとしては、想定内のことでしょう。
しかし、Dcount関数で行うと重いです。
そう、ヤツの出番です。
目次
同一グループで順位をつける 音速の速さ
こんにちは。伊川(@naonaoke)です。
少し、乱暴ですが、
VBAを勉強するには、競馬が最高です。
教えてgooの達人に言われたことがあります。
最近、本当に実感します。
もし、競馬をやっていなかったら、ここまでの、ブログ、動画をアップすることはできませんでした。
毎週、こんなデータベースにしたいと思いながら、競馬の検証をしています。
今回は、コードを作成した私が、目が点になりました。
このブログはこんな人にお勧め
- ACCESSで、順位を付けている人
- ACCESSで、VBAを勉強している人
- ACCESSで、Dcount関数を利用しているが、作動が重くなり、Dcount関数が嫌いになった人
このブログを、読み終わるころには・・・・
本当に速いです。
Dcount関数で実行すると、20秒位時間がかかりますが、今回のコードは、わずか2秒です。
ACCESSにおいてのDcount関数
私としては、VLOOKUP関数ほど、Dcount関数は嫌いではありません。
しかし、本当に重い。
なぜでしょうか?
答えはカンタン!
Dcount関数を処理する回数が何回も行なわれて効率悪いです。
カウントという位なので、何回もカウントするからです。
泣けてくるぜ、Dcount関数
君には、君の使命があるさ。
Excelでやるなら、COUNTIFS関数
ACCESSでやるなら、Dcount関数
この辺が定番です。
ココが出発点でした。
音速の順位付 作業手順 その1 データベース確認
このようなデータベースがあります。
レコード数は、5,416件です。
余談
データベースを作成するときは、このように作成したほうが、後々便利です。
ご視聴者様からコメントをいただきましたが、この、親ID、子IDの発送も競馬です。
つまり、実務で作成しているデータベースも、実は、JRAのパクリです。
天下のJRAが、雑なデータベースを作成するわけがないのです。
このパクリデータベースで、集計が本当に楽になりました。
音速の順位付け 作業手順 その2 標準モジュールにコードを仕込む
ブログでは、お見せできませんが、ぜひ、動画で確認してください。
マジで、本当に速いです。
音速の順位付け 作業手順 その3 これってもしかして更新クエリ?
これは、更新クエリと同じじゃないの?
そう思ったあなた!
スルドイ!
Accessのテーブルを更新する場合、レコードセットを利用する方法と、更新クエリを利用する方法があります。
前々回紹介したのが、更新クエリで実行する方法です。
今回は、レコードセットで更新する方法です。
どちらを選択するかは、ケースバイケースですね。
しかし前回も言いましたが、ループを、Do~Loopに変更するだけで、Excelのように、少ないコードで処理ができます。
カンタンなクエリ、アクションクエリを覚える
クエリで時間がかかる処理は、DAOを利用して、一括処理をする
他のアプリと連携するには、ADOがある
その前提には、主キーの存在がある
ここがポイント
ACCESSを利用し始めたときは、無我夢中でした。
VBAも、オートルックアップクエリもわからず、Excelの知識のみで、ACCESSを利用していました。
DAOも、ADOもわからず、ExcelからACCESSに転送するなら、こう書くんだ!と思い、コピペをしていました。
どうしても、ハードルが高く、自分で、難しく考えていました。
ここにきて、DAOの理屈を理解したときに、ACCESSの処理を最速で行う方法が、なんとなく理解できました。
そう、まだ、なんとなくです。
しかし、競馬への欲は、自分の中では、留まらず、昨日よりも、快適なデータベースを求めたときに、
さらに、ACCESSのスキルが向上した私がいると思っています。
まとめ
また、ACCESSが楽しくなってきました。
もちろん、Excelも、pythonもです。
その中で、プログラムスキル向上は、目的ではなく、手段であり、目的達成のために勉強することが楽しいです。
今回も最後まで読んでいただき、ありがとうございました。
大変申し訳ないです。
<strong><span style=”background-color: #ff00ff; color: #ffffff; font-size: 24pt;”>今回のサンプルファイルはありません。</span></strong>
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。