3-2
請求書フォームを完成させる
請求明細のサブフォームが完成したので、次に親フォームである請求書フォームを完成させます。親フォームでは、請求明細の合計、消費税額の計算を行います。また、請求明細のレコードの表示順を、入力順に並べ替えて表示させます。さらにフォームの印刷をするところまでを解説します。
@レコード表示を並べ替える
請求明細のサブフォームに表示される請求明細項目を入力した順番、つまり、行番号の小さい順に表示するようにします。
請求明細は、請求明細(マスター)テーブルに入力した順に記録されます。ところが、サブフォームの表示は入力した順にならないことがあります。これは、請求明細(マスター)テーブルがサブフォームに直接表示されているのではなく、クエリを通して表示されているからです。これをいつでも同じように、確実に小さい番号順(あるいは大きい番号順)に表示するために、「請求明細クエリ」に並べ替えの設定をします。
1 クエリで並べ替える
請求明細クエリをデザインビューで開いて、フィールドの並べ替えを設定します。行番の小さい番号順に並べ替えるなら「昇順」、大きい番号順なら「降順」を選択します。親フォームと子フォームを閉じた状態で操作します。
>操作
図3.118 請求明細クエリをデザインビューで開く
@並べ替えを設定する欄(ここではフィールド[行番])をクリックして[▼]ボタンを表示する
図3.119A[▼]ボタンをクリックして一覧から「昇順」を選択する
図3.120ア並べ替えが設定される
図3.121イ昇順に並び替わった請求明細
AC7H441Z
AC7H442Z AC7H443Z
AC7H444Z
キーワード
■並べ替え、レコード表示の順番などを一定の順番に並べること。番号の大きい順に並べ替えることを「降順」、番号の小さい順に並べ替えることを「昇順」という
ASum関数で合計を求める
請求書フォームに、請求明細の小計金額を表示させます。小計金額は、合計を求めるSum関数で集計します。
1 明細小計を計算する
サブフォームに表示されている金額のデータを集計します。サブフォームにテキストボックスを1つ挿入して小計値を表示させます。計算式は次のようになります。
=Sum([金額])
↑ ↑
関数 計算の対象になるフィールド名
請求明細のサブフォームをデザインビュ-で開いて操作します。
●フッター領域を広げる
>操作
図3.122 請求明細のサブフォームをデザインビューで開く
@フォームフッターのタイトルバーの下部にマウスポインタを合わせる
A下方向へドラッグする
図3.123アフッター領域が表示される
AC7H446Z
AC7H447Z
●フッター領域にテキストボックスを挿入する
>操作
図3.124@ツールボックスの[テキストボックス]をクリックして押し込む
図3.125Aテキストボックスをフッター領域に挿入する
図3.126 ウィザードが起動する
図3.127B[次へ]をクリックしてテキストボックス名の入力まで進める(途中の設定値は既定値のままで進める)
図3.128Cテキストボックス名(ここでは「小計金額」)を入力する
D[完了]をクリックする
図3.129アテキストボックスが挿入される
AC7H448Z AC7H449Z
AC7H450Z/AC7H451Z
AC7H452Z
AC7H453Z
●コントロールソースに計算式を入力する
>操作
図3.130 テキストボックス[小計金額]のプロパティウィンドウを表示する
@[コントロールソース]欄の[...]をクリックする
図3.131 式ビルダが起動する
A[=]ボタンをクリックする
ア[=]が入力される(図中のIはカーソル)
B関数フォルダの+印をダブルクリックする
図3.132イ関数フォルダが開く
C組み込み関数フォルダをクリックする
図3.133ウ組み込み関数の一覧が表示される
D[SQL集合関数]をクリックする
エSQL集合関数の一覧が表示される
E[Sum]をクリックする
オ関数が挿入される
図3.134G挿入された関数の<expr>をドラッグする
図3.135カ<expr>が反転表示になる
図3.136H[請求明細のサブフォーム]フォルダをクリックして開く
キフィールドリストが表示される
I[金額]をクリックして反転表示にする
J[貼り付け]をクリックする
ク<expr>が[金額]に入れ替わる
K[OK]をクリックする
図3.137 プロパティウィンドウに戻り、コントロールソースに計算式が入力される
なお、<expr>については275ページで解説します。
AC7H454Z
AC7H455Z AC7H456Z
AC7H457Z AC7H458Z/AC7H459Z
AC7H463Z AC7H464Z
●結果の確認
請求明細のサブフォームをフォームビューで開いて結果を確認します。
>操作
図3.138@[ビュー]ボタンの[▼]ボタンをクリックする
アビュー一覧が表示される
A[フォームビュー]をクリックする
図3.139 請求明細のサブフォームがフォームビューで開く
イSum関数の集計結果
AC7H465Z AC7H466Z
図3.139イのように集計結果(Sum関数の結果)の値が「0」になっています。また、同図ウのようにレコード表示が1になっているのはビューが単票形式になっているからです。[金額]欄は表示されているのに[小計金額]のテキストボックスが「0」になるのは、金額の求め方に問題があるからです(数式に誤りがあると#Errorが表示されることもある)。金額を求めるためにテキストボックスのコントロールソースとして、次の計算式を入力しました(259ページ参照)。
=[数量]*[単価]
計算式をコントロールソースにしたことで、請求明細のサブフォームのレコードソースのデータ参照は断ち切られます。すなわち、計算した結果を記録するフィールドがなくなったということです。したがって、Sum関数で集計するフィールド[金額]に値が入力されていないので、集計値として「0」が表示されたのです。
請求明細クエリのフィールド[金額]の内容を確認してみましょう。いったんサブフォームを保存して、閉じます。
●クエリの確認
請求明細クエリを開いてフィールド[金額]を見てみましょう。
r操作
図3.140 @ [請求明細クエリ]を選択して[開く]ボタンをクリックする
ア 金額の値が0になっている
AC7H467Z/AC7H468Z
すべてのレコードが「0」になっています。このため、図3.139イのように計算式Sum([金額])の結果が「0」になったのです。
請求明細の金額を求めるために、請求書のサブフォームのテキストボックス[金額]に計算式=[数量]*[単価]が入力してあるので、求めた金額はフォーム上だけの結果になってしまったのです。計算式を修正して、正しく表示されるようにします。
2◆クエリ内で計算式の結果を求める
請求明細クエリのフィールド[金額]に、正しい計算式を入力します。計算式の前にフィールド名を付けづに計算式だけを入力すると、作成中のクエリのもとになっている請求書(マスター)テーブルのフィールド[金額]とのつながり(テーブルからフィールドリストに登録)が切り離されてしまうので、フィールド名を残したまま計算式を入力します(図3.149)。
請求明細クエリをデザインビューに切り替えて操作します。
>操作
図3.141 請求明細クエリをデザインビューに切り替える
@フィールド[金額]を表示する
図3.142Aフィールド[金額]欄を右クリックしてショートカットメニューを表示する
B[ビルド]を選択する
図3.143 式ビルダが起動する
アフィールド名「金額」が入力される
図3.144Cフィールド名「金額」のあとにコロン「:」を入力する(見やすくするためにコロンの前後にスペースを入力してもよい。図では前後に1つずつ入力してある)
図3.145Dフィールドリストの[数量]を選択して[貼り付け]をクリックする
イ「<Expr>[数量]」が入力される
図3.146E[*]ボタンをクリックする
ウ[*]が入力される
図3.147F[商品テーブル.単価]を選択して[貼り付け]をクリックする
エ[商品テーブル.単価]が入力される
AC7H469Z
AC7H470Z AC7H471Z
AC7H472Z
AC7H473Z
AC7H474Z AC7H475Z
●数式の変更
フィールド[単価]は、請求明細(マスター)と商品テーブルの2か所に存在し、それらはリレーションシップによって参照を行っています。実際にデータが記録されている商品テーブルのフィールド[単価]を選択します。
先の操作で数式は次のように入力されました。
金額:<Expr> [数量]*[商品テーブル.単価]
しかしまだ、このままでは不完全です。
<Expr>は、外部参照(エクスポート)を意味します。外部参照とは、「自分以外(ここでは数式を入力するフォーム以外を指す)の他のフォームやクエリのフィールドを参照する」という意味です。ここでは同じクエリ内のフィールド[数量]を指すので[<Expr>]は削除します。
また、挿入された[商品テーブル.単価]の意味は、「商品テーブル」はテーブル名「単価」はフィールド名を表しますが、両方をカッコ[ ]で区切る必要があるので次のように書き換えます。なお、カッコ[ ]は半角で入力します。全角で入力してもふつうは半角に変換されますが、操作状況によっては自動的に変換されないことがあるので、半角で入力するようにしましょう。
金額:[数量]*[商品テーブル].[単価]
>操作
図3.148@入力内容を変更する
A[OK]をクリックする
図3.149アフィールド名の欄にフィールド名と計算式が入力される
イ列幅を広げると入力内容がすべて表示される
フィールドの内容は、式ビルダを起動して確認できます。また、ショートカットメニューの[ズーム]を選択して、フィールドの内容を確認できます。また、[ズーム]でそれぞれフィールドの内容を修正することも可能です。
AC7H476Z
AC7H477Z
AC7H478Z
●結果の確認
クエリをデータシートビューに切り替えて、金額が正しく表示されるかどうかを確認しておきましょう。
>操作
図3.150 [ビュー]ボタンをクリックしてデータシートビューに切り替える
@スクロールバーを操作して金額を表示する
ア金額が計算されている
AC7H479Z
エラーが表示されたり、計算結果が正しくないときは、式ビルダを起動して入力内容を確認します。確認したら、クエリを保存して閉じます。
3◆請求明細のサブフォームの小計金額を確認する
クエリ内に金額が表示されたので、サブフォームに入力した計算式=Sum([金額])の結果も正しく表示されるはずです。請求明細のサブフォームのフォームビューで確認してみましょう。
>操作
図3.151 請求明細のサブフォームを[開く]ボタンで開く
アデータシートビューで開く
@[ビュー]ボタンの[▼]ボタンをクリックして[フォームビュー]を選択する
図3.152 フォームビューで表示される
イ小計金額が表示される
AC7H480Z
AC7H481Z
●請求明細のサブフォームの計算式の削除
正しい小計金額が得られるようになったので、請求明細のサブフォームに入力した計算式は不要になります。データベース全体のパフォーマンス向上のために、不要な計算式は削除しましょう。不要な計算式があると、計算のために多少の負荷がかかり、ほんのわずかですが、少しでも不要なものは残さないようにするほうがスマートです。
>操作
図3.153 [ビュー]ボタンをクリックしてデザインビューに切り替える
@テキストボックス[金額]のプロパティウィンドウを表示する
アコントロールソースとして計算式が入力されている
A[コントロールソース]欄の[▼]ボタンをクリックする
Bフィールド[金額]を選択する
図3.154イ[コントロールソース]欄の内容がフィールド名[金額]に変わる
ウ表示内容も「金額」に変わる
これでテキストボックスの内容が計算式からフィールド名に変更できました。なお、サブフォームに表示されている「金額」という文字列は、テキストボックスに付加されたラベルコントロールです。フィールド名[金額]とは別のものなので、混同しないように注意しましょう。
AC7H482Z/AC7H483Z
●結果の確認
データシートビューに切り替えて、正しく表示されていることを確かめておきましょう。
>操作
図3.155 データシートビューに切り替える
ア金額が正しく計算されている
AC7H484Z
4◆親フォームに小計を表示する
請求明細のサブフォームのテキストボックス[小計金額]で求めた小計は、請求書フォーム(親フォーム)には表示されていません。親フォームにも表示させるために、親フォームにテキストボックスを挿入し、コントロールソースとして参照式を入力します。参照式は他のコントロールの内容を参照する式です。
請求書フォームをデザインビューで開いて操作します。
●テキストボックスの挿入
テキストボックスを挿入しテキストボックス「小計」を指定します。フォントサイズなども指定できますが、以下の操作例では既定値のままとしてあります。
>操作
図3.156 請求書フォームをデザインビューで開く
@フォームのサイズを少し広げる
Aこのあたりにテキストボックスを挿入する
図3.157 ウィザードが起動する
B[次へ]をクリックしてコントロール名を入力する状態まで進める
図3.158Cコントロール名(ここでは「小計」)を入力して[完了]をクリックする
図3.159アテキストボックスが挿入される
AC7H485Z
AC7H486Z
AC7H487Z
AC7H488Z
●参照式の入力
コントロールソースに、式ビルダを使って参照式を入力します。
>操作
図3.160アテキストボックス[小計]のプロパティウインドウを表示する
@プロパティ[コントロールソース]の[...]ボタンをクリックする
図3.161 式ビルダが起動する
A[=]ボタンをクリックする
イ[=]が入力される
図3.162B[請求書フォーム]フォルダをダブルクリックする
ウ[請求書フォーム]フォルダが開く
図3.163C[請求明細のサブフォーム]フォルダをクリックする
エフィールドやコントロール名一覧が表示される
D[小計金額]を選択する
E[貼り付け]をクリックする
オコントロール名が入力される
F[OK]をクリックする
カ 参照式が入力される
AC7H489Z
AC7H490Z AC7H491Z
AC7H492Z AC7H493Z
上記の操作で、次の参照式が入力されます。(Formは[Form]と入力される場合もある。[ ]は省略可)
=[請求明細のサブフォーム].Form![小計金額]
注: 上記の操作で、次のように参照式が入力された場合、
=[請求明細のサブフォーム].フォーム![小計金額]
この式では不完全なので、次のように修正します。カタカナでフォームとなっている
部分を半角の[Form]に書き換えます。
>操作
図3.164@参照式を書き換える
A[OK]をクリックする
図3.165アコントロールソースに参照式が入力される
図2点削除
●結果の確認
フォームビューに切り替えて、小計が正しく表示されることを確認します。
>操作
図3.166 請求書フォームをフォームビューで表示する
ア明細金額の小計が表示される
AC7H494Z
●金額の表示形式
プロパティ[書式]を[通貨]に設定すると、\記号や3桁ごとにカンマの入った金額形式で表示されます。また、テキストボックス内での表示位置は、プロパティ[文字配置]でしていできます。[文字配置]を標準にすると、数値は右詰め、文字は左詰めになります。
デザインビューに切り替えてプロパティを設定し、フォームビューで確認します。操作の前に図3.167のようにウィンドウの横幅を広げると、表示内容が途切れないで操作しやすくなります。
>操作
ア 小計のプロパティウィンドウを開く
図3.167@プロパティ[書式]欄の[▼]ボタンをクリックして[通貨]を選択する
図3.168イ[通貨]が設定される
図3.169Aプロパティ[文字配置]欄の[▼]ボタンをクリックして「左」を選択する
図3.170ウ「左」が設定される
図3.171 フォームビューに切り替えて表示状態を確認する
エ左詰めの通貨スタイルで表示される
B フォントサイズを適切に設定する
動作の確認後は、同様の操作で文字配置を[標準]に設定し直しておきましょう。
AC7H495Z
AC7H496Z
AC7H497Z AC7H498Z
AC7H499Z
AC7H500Z
SQL集合関数
ここで入力したSum関数は、AccessがもつSQL集合関数の1つだ。
SQL(Structured Query language)は、プログラム言語の一種で構造化照会言語という意味で、データの抽出、更新、データ管理を行うプログラムを記述するためのプログラム言語である。
AccessはSQLによるプログラムを自動作成する機能をもっている。したがって、データベースを作成する段階ではSQLについて知らなくても支障はないが、より詳細なデータの抽出をしたり、自動作成されたプログラムを変更するには、SQLを理解しておく必要がある。
キーワード
■フッター領域、フォームの下部に表示する内容を入力する領域。ワープロ文書などのフッターと同じ意味
■Sum関数 フィールドに記録された数値を合計する機能
■外部参照 自分以外のフォームやテーブルなどの値を参照すること
■プロパティ[書式] コントロール(テキストボックスなど)にデータ表示するスタイル(数値、文字、日付などの形式)を設定する
■プロパティ[文字配置] コントロール(テキストボックスなど)にデータ表示する文字割付(右寄せ、中央、左寄せ)を設定する
■SQL集合関数 値の集合からさまざまな統計値を求める機能。集計関数ともいう
B消費税額を計算する
前項までで求めた小計金額から消費税を求めましょう。消費税率が変化することが考えられるので、請求書ごとに消費税率を記録しておくことが必要です。消費税の額は請求書フォーム上で計算し、消費税率は請求書フォームに記録しないということです。
ここでは、請求書番号テーブルに消費税率を記録するフィールドを作成し、請求書フォームで計算した値(消費税率)を記録させるようにします。
1 消費税率を記録するテーブル
はじめに、消費税額を求めるための消費税率を記録するテーブルを決めます。消費税率は商品の種類にかかわらず1種類だけなので、請求明細の1行ごとに消費税率を入力して税額を計算する必要はありません。請求書1枚の小計に消費税率をかければいいのです。
請求書の管理は請求書番号テーブルで行っているので、消費税率もこのテーブルに記録します。請求書番号テーブルをデザインビューで開いて操作します。なお、消費税率は整数のパーセント値で示されますが、実際の値は少数なので、フィールドサイズに浮動小数点型を設定します。浮動小数点型には単精度と倍精度がありますが、使用する桁数が少ないので単精度にします。
>操作
図3.172 請求書番号テーブルをデザインビューで開く
@フィールド名として「消費税率」を入力する
図3.173Aデータ型を[数値型]に設定する
図3.174Bプロパティ[書式]欄の[▼]ボタンをクリックして[パーセント]を選択する
図3.175Cプロパティ[フィールドサイズ]欄の[▼]ボタンをクリックして[単精度浮動小数点型]を選択する
図3.176 消費税率が設定されたテーブル
AC7H501Z
AC7H502Z
AC7H503Z
AC7H504Z
AC7H505Z
●テーブルの表示内容の確認
データシートビューに切り替えて確認しましょう。
>操作
図3.177 データシートビューに切り替える
アフィールド[消費税率]が追加されている
すでにデータが入力してあるレコードには、消費税率の値は表示されません。ここで請求書番号テーブルに消費税率の値を入力することもできますが、消費税率を請求書フォームで入力するようにします。確認後はテーブルを閉じます。
AC7H506Z
2 消費税の処理を追加する
請求書フォームに、消費税率を入力するテキストボックスと、消費税額を計算して表示するテキストボックスを挿入します。これらのテキストボックスと請求書番号テーブルのフィールド[消費税率]とをコントロールソースとして設定したり、参照式を入力して、消費税の処理を完成します。
テキストボックスは、[小計]のテキストボックスをコピーして、挿入してみましょう。ショートカットメニューの[コピー]と[貼り付け]を使います。
●コントロールをコピー操作で挿入
すでに挿入されているコントロールをコピーして挿入すると、サイズやプロパティも同じものができます。同じサイズのコントロールを挿入する場合には便利な方法です。
テキストボックスのようにラベルと対になっているコントロールは、テキストボックスをコピー元にすると、ラベルも同時にコピーされます(ラベルをコピー元にするとラベルだけが複写される)
>操作
図3.178 請求書フォームをデザインビューで開く
@複写元のコントロールにマウスポインタを合わせ、右クリックする
図3.179アショートカットメニューが表示される
A[コピー]を選択する
図3.180Bフォーム上を右クリックして、ショートカットメニューを表示する
C[貼り付け]を選択する
図3.181イフォームの左上端にコントロールが挿入される
ウ次の操作でこのあたりに移動する
D マウスポインタを移動するコントロールに合わせる
ここではラベルコントロール
図3.182Eラベルの部分などをドラッグして目的の位置へ移動する
図3.183F移動先でマウスボタンを放す
図3.184エマウスボタンを放したときの位置に移動する
AC7H507Z
AC7H509Z
AC7H510Z
AC7H511Z
AC7H512Z
AC7H513Z
AC7H514Z
AC7H515Z
●設定の変更
新しく挿入したコントロールのプロパティなどを変更します。ここでは、ラベルを「消費税率」に、テキストボックスのコントロール名を「消費税率」に、コントロールソースを「消費税率」に、書式を「パーセント」にします。
>操作
図3.185@ラベルをクリックして、「小計」を「消費税率」に変更して[Enter]キーを押す
図3.186アキャプションが書き換えられる
図3.187Aテキストボックスのプロパティウィンドウを表示する
B[その他]タブをクリックする
Cプロパティ[名前]を「消費税率」に書き換える
図3.188D[データ]タブをクリックする
Eプロパティ[コントロールソース]欄の[▼]ボタンをクリックして[消費税率]を選択する
図3.189イコントロールソースが変更される
図3.190Fプロパティ[書式]欄の[▼]ボタンをクリックして[パーセント]を選択する
G[×]をクリックして閉じる
AC7H517Z
AC7H516Z
AC7H518Z
AC7H519Z AC7H520Z AC7H521Z
●消費税率の入力
消費税率を入力してテーブルに記録する処理が完成したので、フォームビューに切り替えて消費税率を入力してみましょう。書式はパーセントに設定してありますが、1を100%とした値、すなわち5%なら「0.05」と入力します。
>操作
図3.191 請求書フォームをフォームビューで表示する
@消費税率の入力欄をクリックして「0.05」を入力し、[Enter]キーを押す
図3.192ア表示は次のレコードに進む
@の操作を繰り返して(図3.193、図3.194)、データ「0.05」を入力します。データを入力していないレコードが表示されると(図3.195ウ)、消費税の欄には「0.00%」(同図エ)と表示されます。すでに消費税率以外のデータが入力されているレコードでは、新しく付加したフィールド[消費税率]の内容が未確定なので空白(図3.192イ)が表示されます。
レコードボタンをクリックして表示されるレコードを戻すと、消費税率は「5.00%」と表示されます。「0.05」と入力しましたが、入力を決定すると、設定した書式(ここではパーセント)で表示されます(図3.196)。
AC7H522Z
AC7H523Z
AC7H524Z
AC7H525Z
AC7H526Z
AC7H527Z
●消費税率の既定値
新しいレコードを入力するときに、毎回同じ値を入力しなくてもすむよう、プロパティ[既定値]に「0.05」を入力しておきます。
>操作
図3.197アテキストボックス[消費税率]のプロパティウィンドウ
@プロパティ[既定値]に「0.05」を入力する
図3.198A[新規レコード]ボタンをクリックして新しいレコードに進む
イ新しいレコードには「5.00%」が自動的に表示される
なお、上記の操作を行う前に入力したレコードについては、消費税率は自動的には入力されません。この場合は図3.198イのテキストボックスに、それぞれ入力する必要があります。
AC7H528Z
AC7H529Z
3◆消費税額を計算する
消費税率から、消費税額を求めます。コピー元を「小計」としてテキストボックスを挿入し、ラベルを「消費税額」に、プロパティ[名前]を「消費税額」に、プロパティ[コントロールソース]を次の計算式に変更します。他のプロパティは「小計」と同じなので、そのままにします。
=Fix([小計]*[消費税率])
Fix関数は、小数部を切り捨てる機能をもちます。消費税額に1円未満の値が発生したとき、それを切り捨てるために使っています。
簡単な計算式なので、式ビルダを使わずに、プロパティ[コントロールソース]欄に直接入力します。コントロール名の漢字以外は、すべて半角で入力します。
>操作
図3.199 請求書フォームをデザインビューに切り替える
@テキストボックス[小計]を[コピー]し[貼り付け]操作で新しいテキストボックスを挿入する
図3.200Aラベルを「消費税額」に書き換える
図3.201B挿入したテキストボックスのプロパティウィンドウを表示する
C[その他]タブのプロパティ[名前]に「消費税額」を入力する
図3.202D[コントロールソース]欄をクリックしてカーソルを点滅させる
図3.203E入力されている内容を[BackSpace]キーまたは[Delete]キーで削除する
図3.204F計算式を入力する
ア ウィンドウのサイズを広げて入力内容を見やすくする
図3.205イフォームビューに切り替えて確認する
以上で消費税額が求められます。正しく計算されていることを確かめておきましょう。
AC7H530Z
AC7H531Z
AC7H532Z
AC7H533Z AC7H534Z
AC7H535Z
AC7H536Z
キーワード
■単精度浮動小数点型 小数点以下を含む値の桁数が6桁以下の数値を使うときに指定する
■Fix関数 値の小数部を切り捨てる