Access実践入門 TOPへ
 ■ マイクロソフトアクセス、明細データ
基本のデータに対する明細
データベースでよくある、基本データに対して複数の明細的なデータの取り扱いについて説明します。
よく使われるのは、顧客データに対して、売り上げ明細の履歴を登録する、あるいは、営業明細、メンテナンス明細を登録するといったものです。

サンプルプログラムでは、贈り物をいつ誰に、どんな物を贈ったのかを登録出来るようにしています。
またそのデータの集計印刷もしています。

一覧表
住所録のデータと同じように、一覧表で、入力済みのデータが日付の降順に表示されています。
こういった、日付がキーとなった入力明細では、日付の降順に並んでいるのが、わかりやすいです。

「fo進物一覧表」のデザインを見てください。
[レコードソース]は「qu進物一覧表」です。
「進物日日付」を降順に並び替えたものです。

「fo住所録一覧表」と同じようにできています。



次に、「fo進物入力」のデザインを見てください。
これも「fo住所録入力」と同じようにできています。



「fo住所録入力」と違う部分だけ見ていきます。

新規登録か、編集入力かの区分は、同じ変数を使っています。

 Select Case inpmode
 Case 0
     Me.RecordSource = "qu進物一覧表"
     Me.削除.Visible = False
 Case 1
     Me.RecordSource = "qu進物編集"
     Me.削除.Visible = True
     Me.進物番号.Locked = True
 End Select

 上の Me.進物番号.Locked = True の行は無くてもいいでしょう。[可視]が「いいえ」になっていて、使えませんから。

先程の、住所録入力との最大の違いは、明細的なデータなので、同じ住所録番号のデータに対して複数のデータが入力されます。したがって、住所録番号は、主キーになっていません。
主キーである進物番号は、自動的に付けられます。
一覧表の、一番右に、進物番号の欄がありますが、実際のプログラムでは、幅を小さくして、[可視]を「いいえ」にして、隠してしまった方がいいでしょう。

ここでは、入力チェックは、あまりありません。
住所録番号と日付が正しく入力されていれば、それでOKです。

ここでは日付は西暦で入力することになります。
西暦で入力させる方が処理が簡単です。
[定型入力]のぶぶんも、年度の桁が2桁増えているだけです。

後の項目は、「fo住所録入力」を参照してください。

印刷

集計クエリーを使ったレポートを作っていますので、ここで見ておきます。
「re進物合計」のデザインを見てください。



レポートフッターに合計欄があります。
レコードソースの「qu進物合計印刷」に集計クエリーを使っています



集計クエリーの作成手順を説明します。
まず、必要な項目を下に落とします。
上のメニューから「表示」「集計」で、全ての項目にグループ化というのがデザインの集計の行に入ります。
グループ化というのは、そのデータが同じだったら、1行に集計してくれます。
同じ住所録番号で、集計してくれることになります。
名前もグループ化が付いていますが、同じ住所録番号のデータは、必ず名前も同じです。
カウントは、そのグループに何個データがあるか、数えてくれます。
合計は、そのグループの金額の合計をしてくれます。

Where 条件は、集計に関係ない、抽出条件です、次のように書きます。
Between [Forms]![fo進物合計印刷]![日付始め] And [Forms]![fo進物合計印刷]![日付終わり]

ここで、印刷指定画面を見ておきます。



ここでは、日付の範囲を指定してもらいますが、データの入力で使ったような、日付のチェックをしています。


クエリーを保存すると、フィールドの表題が、自動的に、「○○のカウント」とかに書き変わっています。そのまま使いましょう。

では、レポートのデザインに戻ってください。

レポートフッターにある、合計の欄を見てください。
レコードソースが、次のようになっています。
=Sum([進物番号のカウント])
=Sum([進物金額の合計])

明細の項目名に"=Sum()"が付いたものです。
レポートフッターにこのように書くとレポートで合計計算ができます。
(注意)ページフッターに付けても合計計算はしてくれません。