トップ > スキル : アプリケーション > Access(アクセス) > データベースシステム(クエリの作成)

Access

売上管理データベースの作成

クエリの作成1

クエリは、テーブル間のデータを一つの表にまとめられるオブジェクトです。クエリの種類や作成方法にはいくつかあります。ここで、クエリの基本的な作業を覚えるようにしてください。

まず、テーブル同士のデータを結合した表をデザインビューから作成します。この時に使用するクエリが、選択クエリです。

クエリの作成1(Q売上データ)

売上データを1つの表にまとめるクエリを作成します。

① [作成]タブを選択し、[その他]-[クエリデザイン]ボタンをクリックします。

② [テーブルの表示]ウィンドウが表示されますので、すべてのテーブルを追加します。初期では、テーブルが乱雑に表示されますので、テーブルを整理して結合線を見やすくレイアウトを調整します。

③ 各フィールドリストから下の表を参考にして、11個のフィールドをデザイングリッドに追加します。

フィールドリストフィールド名
売上テーブル売上NO
売上テーブル顧客ID
顧客テーブル会社名
売上詳細テーブル詳細ID
売上詳細テーブル商品ID
商品テーブル商品名
商品テーブル単価
売上詳細テーブル数量
売上詳細テーブル割引率
売上テーブル社員ID
社員テーブル

④ フィールドを追加したら、データシートビューに切り替えて結果を表示させます。

⑤ 名前を付けて保存します。F12キーを押して「名前を付けて保存」ダイアログボックスを表示させます。
「Q売上データ」をいう名前で保存します。

名前を付けて保存する

※ クエリなどを作成して保存する際に、名前には気を遣うことが必要です。同じような性質のデータを、テーブルやクエリ、フォームなどで作成することはよくあります。同じ名前にしたい場合、どのオブジェクトで作成したか分かるように、名前の前にアルファベットなどを付け加えることをします。例えば、クエリであれば「Q」、テーブルであれば「T」のアルファベット一文字を先頭につけます。

単価に書式をつける

作成した「Q売上データ」クエリのデータシートビューで見ると、単価の欄には書式が付いていません。「商品テーブル」内のフィールドプロパティで、「単価」に「通貨」書式を設定するとクエリ上でも通貨書式が設定されます。
クエリ上で通貨書式を付けたい場合は、デザインビューに切り替えて、「単価」フィールドのプロパティで設定することで可能です。しかし、このクエリを基にして作成するフォームやレポートには、この書式は反映されません。クエリ上で設定した書式は、そのクエリのみに反映されます。

金額フィールドの追加

[単価]フィールドと[数量]フィールドの値から“金額”が求められます。また、単価や数量の値が変更されると、その計算で導かれた金額は更新します。計算によって刻々、値が変わるようなフィールドはテーブル内に作成しないで、クエリやフォーム、レポート上に"演算フィールド" 、"演算コントロール" として作成します。
もし、テーブル内に計算結果となるフィールドを作成すると、無駄にテーブル自体の容量が大きくさせてしまいます。

金額フィールドを作成して、クエリ上で表示させます。


① 「Q売上データ」クエリをデザインビューで開き、[割引率]フィールドにカーソルを移動(または、列を選択)させます。

[クエリツール]-[デザイン]タブを選択し、[クエリ設定]-[列の挿入]ボタンをクリックします。

② [数量]フィールドと[割引率]フィールドの間に1つ列が追加されます。
[フィールド]行に「金額:単価*数量」と入力して、Enterキーを押します。

※ カギカッコ [ ] は省略可。記号は半角入力。

金額フィールドの入力

③ データシートビューに切り替えると、[金額]フィールドが追加されて計算結果が表示されています。

④ 割引率を含めて金額を求めるようにします。
この場合、割引率が指定されているレコードとされていないレコードがあります。割引率を含めた金額は、[割引率]フィールドに値が存在する時で、存在しない時は単に単価と数量だけの計算をさせるようにします。

[金額]フィールドの式を変更します。

金額: IIf(IsNull([割引率]),[単価]*[数量],Round([単価]*[数量]*(1-[割引率])))

IsNull関数とは、空白(Null値)が含まれている場合、結果をブール型(0または1)の値で返します。

IsNull(expression): IsNull 関数は、引数がNull値の場合は真 (True) を返し、それ以外は、偽(False)を返します。

IIF関数は、条件が一致する場合と一致しない場合の処理を分ける分岐処理を行います。

構文:IIf(expr, truepart, falsepart)
引数説明
expr必ず指定します。評価対象の式を指定します。
truepart必ず指定します。名前付き引数 expr が真 (True) の場合に返す値または式を指定します。
falsepart必ず指定します。名前付き引数 expr が偽 (False) の場合に返す値または式を指定します。

Round関数は、小数点以下の指定された桁以下を四捨五入した数値を返します。

構文:Round(expression [, numdecimalplaces ] )
引 数説 明
expression必ず指定します。四捨五入を行う数式 (数式 : 数値で評価する式です。数式は、変数、定数、関数、および演算子を任意に組み合わせて指定できます。)を指定します。
numdecimalplaces省略可能です。四捨五入する小数点以下の桁数を表す数値を指定します。省略すると、最も近い整数に丸められます。

⑤ データシートビューに切り替えます。

割引率の数値が存在するところの金額がただしく表示されていることを確認します。