<馬出走録に,成績の集計を表示するには>
馬出走録には,成績の集計が表示されていません。 私自身は,個別のレースの成績を検討するので,集計は重視していなかったこともあり,付けてありませんでした。 ただし,レース数が多い馬の場合,集計があったほうが便利だということで,以下のようにして成績集計や獲得賞金を表示するようにします。 もちろん,成績がすべてそろっていないと正確なものが出ません。
なお,過去の成績は,CD-ROM から手に入れた方がお得です。 現在,12,000円ですが,今後安くなることはないと思うので,(さらに安くなったらごめんなさい ... ) JRA-VANさんの気が変わらないうちに手に入れておいた方がいいかも ...
1. 出走録サブをデザインビューで開きます。
2. フォームヘッダーを広げます。 後で,微調整すればいいので適当に広げます。
3. すべてのラベルを選択した状態で,矢印が手の形の場所でつかみ,ドラッグします。 (なお,何もない場所から,ラベルやテキストボックスを囲むようにしながらドラッグすると,コントロールを複数選択できます。または,Shiftキーを押しながら複数選択します。)
4. 以下のように空きができるので,ここに集計を表示するようにします。
5. 非連結テキストボックスを追加します。 背景スタイルが透明になっていたら,普通に直しておいてください。 書式は,数値にしておきます。
6. 以下のように設定します。
名前 | 平地総合1 |
コントロールソース | =Count(IIf([平障別]='0' And [確定着順]=1,[確定着順],Null)) |
7. 一度,保存して閉じます。施行レース画面から任意の馬を開けてみます。 エラーになっていないか,1着の数があっているか確認します。
8. コピー → フォームヘッダーバークリック → ペースト を繰り返し,残り3つを作ります。
名前やコントロールソースは,以下のように変えます。
名前 | 平地総合2 |
コントロールソース | =Count(IIf([平障別]='0' And [確定着順]=2,[確定着順],Null)) |
名前 | 平地総合3 |
コントロールソース | =Count(IIf([平障別]='0' And [確定着順]=3,[確定着順],Null)) |
名前 | 平地総合4 |
コントロールソース | =Count(IIf([平障別]='0' And [確定着順]>3,[確定着順],Null)) |
以下のようになっていれば,成功です。
[ポイント1]
帳票タイプのフォームでは,フォームヘッダーで,各レコードの集計が行えます。 ここで,使える関数は,以下のような SQL集計関数 と呼ばれているものです。
Avg 関数 (平均を求めます)
Count 関数 (レコード数を数えます)
First 関数,Last 関数
Min 関数,Max関数 (それぞれ,最小値・最大値を返します)
StDev 関数,StDEvP 関数
Sum 関数 (数値を合計します)
Var 関数,VarP 関数
[ポイント2]
上記のSQL集計関数では,Null 値 のレコードは無視されます。その特性を利用して,IIf() 関数 と組み合わせて,特定のレコードの集計だけを出します。
9.
芝用のものを作るために,出来上がった 平地総合をすべて選択して,コピー →
フォームヘッダーバークリック → ペースト で同じものを作ります。ドラッグして適当な位置に持ってきます。
10. 以下のように,名前とコントロールソースを変更します。
名前 | 集計芝1 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='芝' And [確定着順]=1,[確定着順],Null)) |
名前 | 集計芝2 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='芝' And [確定着順]=2,[確定着順],Null)) |
名前 | 集計芝3 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='芝' And [確定着順]=3,[確定着順],Null)) |
名前 | 集計芝4 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='芝' And [確定着順]>3,[確定着順],Null)) |
11. ダート用のものを作るために,出来上がった 集計芝をすべて選択して,コピー → フォームヘッダーバークリック → ペースト で同じものを作ります。ドラッグして適当な位置に持ってきます。
12. 以下のように,名前とコントロールソースを変更します。
名前 | 集計ダ1 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='ダ' And [確定着順]=1,[確定着順],Null)) |
名前 | 集計ダ2 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='ダ' And [確定着順]=2,[確定着順],Null)) |
名前 | 集計ダ3 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='ダ' And [確定着順]=3,[確定着順],Null)) |
名前 | 集計ダ4 |
コントロールソース | =Count(IIf(Left([芝ダ別],1)='ダ' And [確定着順]>3,[確定着順],Null)) |
芝とダート両方走ったことのある馬を見て確認します。以下は,フェブラリーステークスからキョウエイマーチを開いてみました。
なお,障害の集計は,以下のようになります。
名前 | 障害総合1 |
コントロールソース | =Count(IIf([平障別]='1' And [確定着順]=1,[確定着順],Null)) |
名前 | 障害総合2 |
コントロールソース | =Count(IIf([平障別]='1' And [確定着順]=2,[確定着順],Null)) |
名前 | 障害総合3 |
コントロールソース | =Count(IIf([平障別]='1' And [確定着順]=3,[確定着順],Null)) |
名前 | 障害総合4 |
コントロールソース | =Count(IIf([平障別]='1' And [確定着順]>3,[確定着順],Null)) |
JRAのみの集計は,以下のようになります。
名前 | 中央総合1 |
コントロールソース | =Count(IIf([地方フラグ]='0' And [確定着順]=1,[確定着順],Null)) |
名前 | 中央総合2 |
コントロールソース | =Count(IIf([地方フラグ]='0' And [確定着順]=2,[確定着順],Null)) |
名前 | 中央総合3 |
コントロールソース | =Count(IIf([地方フラグ]='0' And [確定着順]=3,[確定着順],Null)) |
名前 | 中央総合4 |
コントロールソース | =Count(IIf([地方フラグ]='0' And [確定着順]>3,[確定着順],Null)) |
地方競馬のみの集計は,以下のようになります。
名前 | 地方総合1 |
コントロールソース | =Count(IIf([地方フラグ]<>'0' And [確定着順]=1,[確定着順],Null)) |
名前 | 地方総合2 |
コントロールソース | =Count(IIf([地方フラグ]<>'0' And [確定着順]=2,[確定着順],Null)) |
名前 | 地方総合3 |
コントロールソース | =Count(IIf([地方フラグ]<>'0' And [確定着順]=3,[確定着順],Null)) |
名前 | 地方総合4 |
コントロールソース | =Count(IIf([地方フラグ]<>'0' And [確定着順]>3,[確定着順],Null)) |
なお,馬出走録サブのレコードソースであるSQL文には,地方フラグが含まれていません。 以下のように追加します。
SQLビルダを起動後に,Raceテーブルフィールドから 地方フラグ をドラッグしてきます。
必ず,そのまま閉じます。 保存アイコンを押してはいけません。 すると以下のダイアログが出るので,はい を押します。
フォームを保存して,一度閉じます。
以下の例では,オースミジェットの馬出走録を表示したところです。 最近は,地方のレースと中央のレースが半々という馬も多いのでこの集計は,意外と便利かもしれません。
※ さらに細かく表示したい時は,IIf(条件, 真の時の処理, 偽の時の処理) の条件に,AND を使って設定します。 なお,OR を使う時は,適切に ( ) をつける必要があります。
※ 各テキストボックスの名前は,もちろん好きなように付けてかまいません。
※ 日本だと,13-13-6-18 は,1着-2着-3着-4着以下 を指しますが,海外では,同じ成績の場合,50-13-13-6 となり,総走数-1着-2着-3着 になります。