| 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文を使えば、クエリーはコード化することができます。極端に言えば、クエリー無しでも処理はできます。 このサイトは、プログラマーのためのものではなく、時間を掛けないでプログラムを作ることを目的としているので、回り道をしようと、不必要なクエリーが増えようとも、解りやすく作ることが大事なのでこのようなクエリーも作っているのです。ご理解ください。 登録されていなければ、下のクエリーで登録です。 ![]() |
|