Microsoft Access Club >初心者講座 >CDアルバム管理ソフト >このページ >次頁 - 前項


サブフォームの解説 : CDアルバム管理ソフト05



今日のサブフォームは、このシリーズの中核となるものです。躓きやすい箇所なので、皆さん気を引き締めて進みましょう。

貴方の年末年始は順調に進んでましたか?丁度今日は「初出勤の日」、そして入力フォーム完成の日でもあります。前回のサンプルフォームを見ると、サブフォームが汚かったですね。それを今からクリーンにして行きましょう。

サブフォームの修正

まず、「frm_sub」を デザインモード(修正可能フォーム) で開いてください。最大化にしていただいた方がいいかもしれません。このフォームは帳票形式フォームです。いままでのメインフォームは単票形式フォームでしたね。

帳票形式のフォームにデータ入力を次々行っていくと、「詳細」部分のレコードがどんどん追加され下がっていきます。よって、単票形式フォームのように 移動ボタン が 不要です。しかし、その代わりに スクロールバー が必要となります。

また、このサブフォームは単独では使用せず、必ずメインフォームと一緒に開かれます。となれば、メインフォームより小さい方が見栄えが良いということです。これも大事なことです(すいません。当然のことですね…ハハハ)。

テキストボックス

じゃ、具体的に作業を進めます。最初に、入力が不要であるテキストボックスを「使用不可」にしましょう。

サブフォーム内では、「ID」及び「No.」です。これらはアクセスが自動的に入力します。また、「区分」には、朝、昼、夜(どの時間帯にマッチする曲なのか)の何れかを入力します。「ランク」は、5点評価で何点の曲なのかを入力します。

「ランク」について、サンプルフォームでは単に1から5までの数値を入力するように作成していますが、"ベリーグッド"から"いまいち"まで日本語で表現することも出来ます。このような発展を持たす意味からも、 データ型は、数値型ではなくテキスト型に設定しています。

その他、下記のように修正、変更を行って下さい。

  1. サブフォームの移動ボタンを「いいえ」にする。

  2. スクロールバーを垂直だけにする。

  3. 「区分」、「ランク」をコンボボックスに変換する。

  4. 「連番」のタブストップを"いいえ"にする。(マクロで自動入力の設定を行っているからです。)

  5. 「曲名」、「演奏」、「区分」、「ランク」、「etc」の"漢字変換モード"を適時定める。

  6. 「演奏」の定型入力欄に 99\分99\秒;0;_ 、書式に nn"分"ss"秒" 、既定値に00分00秒を記述する。

  7. 「etc」の"Enterキィーの入力時動作"を適宜変更する。

  8. 各テキストボックスの横幅を調整して、全体で17cm位(ルーラー)に納める。

下記サンプル図のようになりましたか?いや、皆さん方のサブフォームでは「連番」欄が空欄 になっていますね。このことについては、あとで説明しますからそのまま進みましょう。

ウィザードで作成すると、全体のバランスが悪いですね。今回も、メインフォームが小さくてサブフォームが隠れています 。「見かけ」は大事ですから、きっちりサイズに収まるようにしていきましょう。

メインフォーム自身やサブフォームを収納するボックスの縦・横幅を広げて調整して下さい。

連番の作成

さあ、一度、データ入力してみましょうか。順調に入力が進むと思いますが、一点、「連番」に何も表示され ませんね。次に、この「連番」を表示させる方法をご紹介します。

そもそも、「連番」の必要性は、CDの何番目の曲かを把握するためです。そのために、わざわざフィールド設定 まで行ったんです。

一般的に、「連番」と称するものは自動入力が基本です。まぁ、入力者が随時、数値を入れていけばいいんですが、そうもいきません。よって、自動的入力ができるようなプログラミングを作ってみましょう。 初めてのプログラミングですね。但し、データ入力後の取り消しやデータ削除には対応させていません。この場合は各自で修正してください。

連番の付与については、

  1. その場その場で手入力する方法

  2. 今回のようにマクロアクションで代入する方法

  3. 独自関数を作成し更新クエリで付与する方法

などいろいろあります。

最初ですから、マクロで作成し詳しく解説します。

アイテムに [Forms]![frm_main]![frm_sub]![連番]

式に DCount("[No]","[tbl_sub]","[No]=Forms![frm_main]![frm_sub]![No]")+1 を記述します。

  1. 条件として、「連番欄に何も入力されていなければ、右のマクロを実行しなさい。入力済みであれば、何もしなくてもいいですよ。」を記述しています。
    この Is Null(ヌル)とは "存在しない"という意味です。

  2. 「tbl_sub」の「No」フィールドの既定値が必ず 空白 となっているか確認して下さい。ここに何かデータが入っていますと、不都合が起こります。

  3. アクションは"値の代入"です。このアイテムはよく使いますので勉強の価値は大です。「アイテム」へ「式」を代入することができます。

  4. 今回の「アイテム」は当然、[連番]です。

  5. ここで注意が必要です。
    サブフォーム(レポートも含む)の場合は、ちょっと記述が複雑になります。[Forms]![frm_main]![frm_sub]![連番] 太字の部分です。よく記述漏れがあるので忘れないようにして下さい。

  6. 式がかなり複雑ですね。最初なのに申し訳ないんですが、これも試練です。

  7. Access組み込みのDcount関数(個数を集計)を使って、サブフォームに表示されている「No」から導き出して、1個プラスしています。データを見に行くところは、「tbl_sub」です。

  8. このDcount関数を含む"定義域集計関数"群はとても重要なものですので、しっかり勉強して下さい。「参考ファイルNo9」に詳細があります。ここをクリックして下さい。

  9. あとは、「曲名」の「更新後処理」イベントにマクロを定義してください。

ここまでで、基礎的なAccessの概略説明が終わった訳ですが、もう一度最初から何も見ずにやってみて下さい。

繰り返し、繰り返し何度でも…。パターンを覚えることです。皆最初は、他人様が作ったアプリを分析し真似して、ここまで来ているんですから…。

 

では、今日はこのへんで…、またお会いしましょう。

 

ページの先頭へ 前ページへ戻る

 


サブフォームの解説 : CDアルバム管理ソフト05


 

-Microsoft Access Club-