Access実践入門 TOPへ
 ■ マイクロソフトアクセス、大会データ入力
大会データについて

道場ですから、定期的試合とか大会とかがあります。
どんな大会があったか、誰が参加したか、どんな成績だったかを記録するものです。



まず、大会データの一覧が開きます、次に編集ボタンで大会のデータ編集画面、
さらに、大会参加者の一覧画面、そして参加者の追加選択画面と4つの窓が開きます。
窓がたくさん開いて解りにくいという人も居ますが、これがデータベースのいいところで、データの種類毎にどんどん窓を開けて、データを編集していきます。
ここで大事なことは、一番上にある窓しか編集を許さないことです。
下の窓のデータを変更できてしまうと、おかしな事になります。

全てのフォームの、フォーム全体のプロパティの「作業ウインドウ固定」を「はい」にします。
「自動中央寄せ」も「はい」にしておいた方が、わかりやすいです。

一覧表の隠しコントロール

大会データの一覧表のデザインです。


大会データの主キーの[id]はオートナンバーなので、入力者は入力時に意識しませんし、表示する必要もありませんが、プログラムの中では重要なので、[id]のプロパティで「可視」を「いいえ」にいて
住所の所に置いています。
たとえば、主キーを大会番号として入力者に登録して貰っても良いのですが、番号付けをするのは面倒ですし、大会のデータを検索する場合には、大会名とか大会の日付とかで検索した方が便利です。

実は、この[id]のコントロールはここに貼り付けていなくても、このフォームのコントロールソースの「qu大会一覧」の中にあるので、編集ボタンをクリックした時の編集画面「fo大会入力」を呼び出すことは出来ます。
編集ボタンをクリックした時の「fo大会入力」のコントロールソースは「qu大会編集です」
そこの[id]の抽出条件には[Forms]![fo大会一覧]![id]です。
「fo大会一覧」に[id]というコントロールが貼り付けてなくても、コントロールソースのクエリーにそのフィールドがあれば、参照出来るみたいです。
ただ、わたしは、以前何かで出来なかった記憶があるので、参照するコントロールは貼り付けるようにしているのですが・・・

大会参加者の追加ボタン

大会参加者の追加は一覧表の追加ボタンをどんどんクリックして、確認無しで追加出来るようにしています。


追加ボタンの「クリック時」に次のようなプロシージャが書いてあります。

-----------------------------------
Dim i As Long
i = DCount("*", "qu大会参加者追加ck")

If i > 0 Then
MsgBox ("すでに登録済みです...")
Else
DoCmd.OpenQuery "qu大会参加者追加"
End If

-----------------------------------

i = DCount("*", "qu大会参加者追加ck")

下のクエリーのレコード数を計算しています。
答えがゼロで無ければ、登録済みということです。


ここではクエリーを使って処理していますが、
i = DCount("*", "ta大会参加者", "[大会id]=[Forms]![fo大会一覧]![id] AND [会員id]=[Forms]![fo大会参加者選択]![id]")
と書いて、直接テーブルをカウントすればクエリーは必要ありません。
いろんな方法がありますので、試してみてください。

これは、簡単な例ですが、SQL文を使えば、クエリーはコード化することができます。極端に言えば、クエリー無しでも処理はできます。
このサイトは、プログラマーのためのものではなく、時間を掛けないでプログラムを作ることを目的としているので、回り道をしようと、不必要なクエリーが増えようとも、解りやすく作ることが大事なのでこのようなクエリーも作っているのです。ご理解ください。


登録されていなければ、下のクエリーで登録です。