また、クエリさえ作れればフォームは簡単に作れるという感じをつかんでください。
各フィールドの意味は以下の通りです。
T08Details
・DETAILS_CD 明細CD
・SLIP_CD 伝票CD
・GOODS_CD 商品CD
・AMOUNT 数量
・MEMO メモ
T06Goods
・GOODS_NAME 商品名
・PRICE 単価
販売伝票フォームの完成イメージです。今回は明細部分に注目しましょう。
明細だけを抜き出してみました。この部分の基(もと)になるのは、テーブル「T08Details」です。
*GOODS_CD、AMOUNT、MEMOだけが白いテキストボックスで、他は背景色が灰色で入力できないようになっています。他のものはクエリを使って参照したり、演算フィールドで表示しています。
テーブル「T08Details」のデザインビューとデータシートビューをよく見てください。
DETAILS_CDはオートナンバーなので自動で入力されます。SLIP_CDはテーブルやクエリでは入力が必要ですが、フォームにすると自動的に入力できます。ということは入力するのは3つだけです。
それでは実際にクエリを作ってみましょう。
【1】Accessのファイル「SampleDB020.mdb」を起動します。
*簡単な操作は省略していきます。
【2】オブジェクトで「クエリ」を選択します。
【3】「デザインビューでクエリを作成する」をダブルクリックします。
【4】テーブル「T08Details」、「T06Goods」を選択し、「追加」ボタンをクリックします。追加したら閉じます。
「Ctrlキー」を押すと同時に選択できます。
【5】クエリのデザインビューにT08DetailsとT06Goodsが追加されました。GOODS_CD同士が結合しています。結合していない場合はドラッグして結合してください。またデザインビューは見やすい大きさに広げてください。
【6】画面下(デザイングリッド)にフィールドを追加します。まずT08Details側から追加します。DETAILS_CD、SLIP_CD、GOODS_CDを追加してください。
*この時、GOODS_CDをT08Details側から選択していることが重要です。主役はT08Detailsです。T06Goods側のGOODS_CDを使うと後々エラーになります。
【7】次はT06Goods側からGOODS_NAME、PRICEを追加します。
【8】T08Details側からAMOUNTを追加します。
【9】演算フィールドを以下のように入力してください。
P*A: [PRICE]*[AMOUNT]
・P*A の*は全角で入力します。(文字です)
・[PRICE]*[AMOUNT] の*は半角で入力します。(演算子です)
【10】T08Details側からMEMOを追加します。
【11】DETAILS_CDの 並べ替え: に「昇順」を設定します。
わざわざ昇順を設定するのは、クエリの初期状態では必ずしもDETAILS_CDの順番に並ばないため、明確に指定する必要があるからです。
【12】データシートビューで確認します。
【13】作ったクエリが正しく表示されているかの目安は、基になっているテーブルと同じレコード数がクエリで表示されているかです。
レコード数が違う場合は、T06GoodsにないGOODS_CDをT08Detailsで入力していたなどの原因です。
【14】SLIP_CDが「3」のレコードを覚えておいてください。
【15】デザインビューでSLIP_CDの 抽出条件: に「3」を入力します。
【16】データシートビューで確認すると、SLIP_CDが「3」の明細だけが抽出されました。
Accessのサブフォームを使うと、わざわざクエリの抽出条件に設定しなくても伝票に対応する明細を自動で表示してくれます。(フォームの機能)
【17】クエリQ09Detailsで表示したデータと、明細フォームの完成イメージをくらべてみてください。
くらべるとフォームに必要なフィールドがクエリに全てそろっていることがわかります。ここまでくるとクエリからフォームが簡単に作成できます。
【18】確認したらSLIP_CDの 抽出条件: をクリアしてください。
【19】クエリを保存します。クエリ名は「Q09Details」としてください。
【20】データベースウィンドウにクエリ「Q09Details」が作成されました。
Accessの基本を短期間で学べるように工夫しています。リレーショナルデータベースの考え方が理解できます。
