<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--見積書を作る
   1 > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 16 



クエリのままだとちょっとばかり見栄えが悪いですが、まあ、結果は出ていると思います。
これをもとに、簡単な表形式のフォームを作れば、過去の見積の一覧を参照することができますね。
[金額]とか[値引額]を直接見る必要なければ、フォームでは隠してしまえばいいと思います。

じゃ、このクエリを基にした、表形式のフォームも作っちゃってください。
後で使いましょう。

ついでに、そのフォームのヘッダー部分にでも、非連結のテキストボックス作って、そのテキストボックスの「更新後処理イベント」に、

こんな感じのコードを書けば、見積番号で検索することができますよね。

顧客名で検索したい場合、ニホンゴだと少々難しいので・・・上のクエリで、顧客番号もいっしょに出るようにして、顧客番号で絞り込んだ方が確実でしょう。
どんどん増えていくであろう見積データの中から、お目当ての情報だけ検索するための仕組み、いろいろ工夫してみてください。


一覧で「どういう見積を出したか」をずらっと見るだけではなく、詳細の内容も見たいですよね・・・。
じゃあ、詳細画面も作りましょうか。
[見積テーブル]と[見積明細テーブル]をもとに、顧客名や商品名などを参照できるクエリを作ってください。
選ぶフィールドは、いっちばんさいしょに[見積入力フォーム]を作ったときとおんなじです。

上のふたつのクエリを基にした、見積入力フォームとほぼ同じ構造のフォームを作ればよいと思います。
[見積入力フォーム]と[見積明細入力フォーム]をそれぞれコピーして、名前とレコードソースプロパティを変えて使ってもいいですね。

このフォームから、見積の内容を変更することはないと思いますし、変更できちゃったらまずいんじゃないかと思うので、コンボボックスはテキストボックスに戻しておくといいでしょう。また、フォームの色を変更したりして、パッと見、区別がつくようになさるとよいと思います。


で、さっき作った一覧表フォームの、詳細部分にちっちゃいコマンドボタンでもつけて、クリック時のイベントとして・・・。

フォームを開きます。

マクロの「フォームを開く」アクションの引数で、Where条件というのがあるんで、特定のレコードだけ表示するような形でフォームを開くことができます。
これをうまく活用して、「一覧から選んだ見積の内容」だけ表示するようにしてみました。しかも、「読取専用状態」で。

詳細のボタンをクリックすると、内容が出てきますか?


ほんとはですね・・・。このあたりまで、頭の中できっちり作ってみて、それからテーブルの設計をしていくのが理想なんですよ。このあたりまで完成イメージがつかめないと、実際にテーブルの中にどういうデータが必要になるか、想像つかないと思います。

「なぜ見積合計金額など、いちいち計算式を作って出しているのか?なぜテーブルにフィールドを作って代入しないのか?」と思う人もいるかもしれませんね。でも、データベースは「表計算ソフト」ではありません。基本的に、「単価」と「個数」さえしっかり入っていれば、いかようにも計算できるはず。そういう場合は、あえて値を固定せず、その都度おなじロジックの計算式を使って出します。一見手間のようですけれど、これも「正規化」のひとつです。もちろん、テーブルの中に値を持ってもいいのかもしれないですよ。でも、いつ計算させて、いつ見積合計を代入しますか?そういうのを考えると、場合によっては「個数×単価が金額にならない場合」も出てきてしまうと思います。金額の計算をしてテーブルに代入してから、うっかり個数のフィールドの値を変更してしまったら・・・金額が正しいのか、現状の個数×単価が正しいのか、判断できなくなってしまう可能性もあります。表計算ソフトになれている方は、こういうのを「使いにくい」とお考えかもしれませんけれど、データベースの本来の目的は、「データを安全に正確に保持し、迅速に並べ替え、迅速に検索する」ことにあるのだ、ということをまず頭に置いて、設計していってください。
もちろん、「金額」や合計金額」などの項目を、テーブル内に持っていたほうがよい場合もあると思うんですよ。
「必要以上にあっちこっちに同じような値を持たない」ように心がけて設計するのが、ポイントです。
でもこれって、ホントに難しいですよ。「リレーショナルデータベースの概念」ですからね。。。
データベース系の検定試験などを受けるつもりで勉強なさってる方は、こういうのしっかり理解しておかないとならないですけど、基本的には、あんまりデータベース用語で固めてしまわず、身の回りのいろいろな情報の集まりをテーブルに置き換えて考えてみたりしながら、理解を深めていかれればよいと思います。

「見積」と一口に言っても、いろんなパターンがあると思うし、会社によってやり方も違うと思います。でも、逆に、こういうデータベースって、見積書以外でも、たとえば売上の入力とか、個人情報の入力とか、いろんなデータベースに置き換えてみると、根本的な仕組みが似通っててそのまま応用できたりとか、しますよね。



(オシマイ)