練習3:納品書作成データベース(2)
では、次に、「納品テーブル」「納品明細テーブル」と、残りの二つの”マスター”テーブルとを結びつけるための操作に入ります。
クエリを作りますぞ。こういう場合のクエリは、テーブル同士の結びつきを示す”リレーション”の役割も担うんです。テーブル同士の結びつきを意識しながら作ってみてください。
クエリを作成(親フォーム用)
クエリを新規に作成します。
タブメニューの「作成」タブがクリックされている状態のリボンの一番右端に、「クエリデザイン」というのがありますから、これをクリック、でしたよね。
図1:クエリを作りますよ
「
納品テーブル」と「
取引先マスター」を選択します。
どちらから選んでもいいですが、今回は、「納品テーブル」の方が主役なので、「納品テーブル」から選ぶ(左側に来るように)と、ちょっといい感じです。
選択するフィールドは、以下の図を参考にしてください。「会社名」だけ
取引先マスター」から選択し、そのほかのフィールドは「
取引先マスター」から選びます。
図2:がんばってー
図3:「納品テーブル」からほとんどのフィールドを選び、「納品テーブル」に無いフィールドだけ、「取引先マスター」から選ぶ感じです
ここまでできたら、クエリを開いてみて、表示内容を確認してみましょう。左上にある、これこれ→
試しに、1件入力してみましょう。
「伝票番号」、「納品日」 を入力し、「会社番号」を入力します。「取引先マスター」に登録してある会社番号を入力してくださいよ。無いものは出ませんからね。
すると、「会社名」が自動的に、出ます?
出たら、このクエリの中での ”二つのテーブルの結びつき” は完成です。
図4:「取引先マスター」から会社名が!
確認できたら、これは単なるテストなので、入力中のレコードは取り消しておきましょう。Escキーを押します。
エンピツマーク中なら、Escキーで取り消せましたよね。
図5:「納品テーブル」の中身は空っぽにしておいてください。
クエリに名前をつけて保存します。
何か、わかりやすい名前をつけておいて下さい。このクエリを使って、後で、フォームを作るので、どんな名前をつけたかわからなくなりそうで不安・・・という方は、右の図と同じように Q_納品 とつけておいて下さい。
名前を付けたら、クエリを閉じておきましょう。
図6:名前をつけて保存する
ナビゲーションウィンドウの表示について
ところで、左端に控えているナビゲーションウィンドウ、表示が少々ややこしいなぁと思うんですが、皆さんの画面はどうですか?
おそらく、Access2007をインストールして一番最初の状態は、右の図のように、まずテーブルがあって、そのテーブルに関連するオブジェクトがぶら下がるように表示されてるんじゃないかなぁと思うんですけどね。これだと、今作ったクエリが、「納品テーブル」と「取引先マスター」の両方に表示されるんです。
二つのテーブルを使ってますからね。
他の表示の仕方に変えるることもできるんですよ。ちょっとやってみましょうか。右図のように、ナビゲーションウィンドウの一番上の部分をクリックしてください。
図7:表示の仕方、変えたいかも
表示の仕方をいろいろ選ぶことができるようになってるんですが、「オブジェクトの種類」というタイプが、わりかしわかりやすいんじゃないかなぁと思うんです。特に、データベース作成途中ではね。
やっぱ前の方がいい、という方は、「テーブルと関連ビュー」という並べ方に変えてください。
図8:Access2003以前のAccessを使ったことある人はこのほうがいいかも
もうひとつクエリを作成(明細)
では、もうひとつクエリを作ります。今度は、「納品明細テーブル」と「商品マスター」を結びつけるクエリです。
クエリを新規に作成し、「
納品明細テーブル」と「
商品マスター」を選びます。
選択するフィールドは、下の図を参考にしてください。
図9:テーブルを選ぶところとか
図10:選択するフィールドはこんな感じ
このクエリは、更にもう一ひねりしますよ。
一番右端の空いている列に、金額(単価×数量)を計算する列を作ります。
一段階ずつゆっくりやっていきましょう。
図11:右端の空いている列を使うぞ
まず、右図のように入力します。
"金額" と入力してから、半角のコロン : です。コロンは半角ですよ。全角はいけません。
まだ終わりじゃないですから、カーソルはそのまま!!
図12:まだ続くぞ
"単価"と入力します。
まだ続くので、カーソルはそのまま!
図13:まだまだ
半角のアスタリスク * を入力します。
半角ですよ。全角で入れてはいけません。半角のアスタリスクです。
まだ続きますよ。カーソルはそのまま!
図14:まだだよ
最後に、"数量" と入力して、完成です。
記号は全部半角なので、間違えないように気をつけてくださいね。
図15:これで式は完成
他の列などにカーソルを移動させます。すると、右図のように、単価と数量だけ、半角のカギカッコで囲まれます。こうなれば、式は完成です。 半角のカギカッコで囲まれるということは、このクエリの中のテーブルのフィールド名であることを表してるんです。ちゃんと、フィールド同士の計算をしてくれるという証明なんですね。
図16:自動的にカギカッコが出る
では・・・クエリの結果を表示させ、入力テストをしてみましょう。
「伝票番号」と「注文番号」を入力し、「型番」を入力すると、「品名」と「単価」が自動的に表示されますか?
もちろん、「商品マスター」に登録済みの型番じゃないと出ませんよ。
図15:出たかのう
さらに、「数量」を入力すると・・・金額が表示されますか?
図16:キターーー!
テストできたら、今入力途中のレコードは取り消しておいて下さい。Escキーでしたよね。
入力した状態でもいいんですが、これからまだいろいろ仕掛けを作りますんで、空っぽのほうがやりやすいんです。
図17:Escキーを押して空っぽにしておいて
このクエリに名前をつけて保存し、閉じておいて下さい。
図18:名前は後でわかりやすいものにしよう
クエリが二つできました。
Excelに慣れている人の中には、Accessを一から理解しようとせず、「Vlookup関数はどうやって使うんですか?」なんて質問してくる人もいるんです。データシートに関数を埋め込むことはできないと答えると、「えーーいまどき信じられない。Accessって不便」と的外れなことを言ってそれっきり、こちらの言葉を受け付けません。
その人にとっては、データの結びつけといえばVlookup関数なのでしょうし、間違った考え方ではありませんが、Accessでは、関数など使わなくても、テーブル同士の関係をきちんと考えておけば、クエリで簡単に、紐づく情報を他のテーブルから引き出す仕組みを作ることができるんです。
もちろん、AccessでもVlookupのような関数を使うこともあります。後で使ってみましょう。ただし、Excelのイメージは取り払っておいたほうがいいと思いますよ。
図19:クエリがふたつ
このページのまとめなど
- フォームの基になるのはテーブルばかりではなく、クエリをあつらえることもよくあるんです。
- 複数のテーブルを使用したクエリを作るときは、中心となるテーブルがどれになるか、しっかり見極めよう。
- テーブル同士の関係を明らかにする方法は、リレーションシップを作成する方法と、クエリを作る方法があるのだ。
- クエリでは、計算式などを埋め込んで、基になるテーブルには無い列を設けることもよくあるんだ。
作成日:2009-1-27