<馬出走録に,成績の集計を表示するには>

馬出走録には,成績の集計が表示されていません。 私自身は,個別のレースの成績を検討するので,集計は重視していなかったこともあり,付けてありませんでした。 ただし,レース数が多い馬の場合,集計があったほうが便利だということで,以下のようにして成績集計や獲得賞金を表示するようにします。 もちろん,成績がすべてそろっていないと正確なものが出ません。

なお,過去の成績は,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着 になります。