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



表示上は[見積番号]ってフィールド、このフォーム上にはいらないと思うんですけど、これ、後で使おうと思ってます。ので、うんと小さくして左の端の方に置いておくとか、あるいは、テキストボックスの書式プロパティの「可視」をいいえにして見えなくしちゃうかしておいてください。

で、ここで・・・・・「商品」を一覧から選べるようにした方がいいのか、それとも、商品番号を直接タイプした方がいいのか・・・。その辺を検討します。

品数が多いときって、コンボボックスから一覧選択って、返ってまどろっこしい操作になるんじゃないかと思うんで、この辺はケースバイケースなんですけども・・・。どうしましょう?

いちおう、コンボにしてみますか。
コントロールの変更の仕方はみなさん大丈夫ですか?[商品番号]のテキストボックスを右クリックして、「コントロールの変更」で、変更できましたよね。

でもって、このコンボボックスの「値集合ソース」を[商品マスタ]にします。そんでもって、「値集合ソース」欄の右端のビルドボタン(ドットが3つのちっちゃいボタン)をクリックして、クエリビルダを起動させます。

で、こんな感じで、選んでみましょうかね。

選び終わったら保存するのではなくて、このビルダのウィンドウを閉じます。保存はしませんよ。

閉じようとするとこんな感じのメッセージが出ますので、このメッセージに「はい」と答えてやります。

これで、コンボボックスの中身を指定することができるんですよね。

さらにさらにもし、コンボを「商品番号と商品名」の 2 列出したい場合は・・・このコンボの書式プロパティの調節をするんでしたよね。

さて、まあ、細かい調節は後回しにするとして、サブフォームの方を仕上げちゃいましょうかね。

ちょっとばかり豪快な操作になりますが、上の図のように、データベースウィンドウから[見積明細入力フォーム]のアイコンを[見積入力フォーム](デザインビュー)に向かってドラッグします。

ちょっとばかり形は整えてもらって・・・。

で、いちばん肝心なところです。今埋め込んだ「サブフォーム」と「メインとなるフォーム」が、どういうつながりなのか、っていう設定の確認をします。

フォーム、というより、フォームが基にしているテーブルの中のどのフィールドを基準にするか、っていうことですね。フォームって、データ持ちませんよね。単に基になってるテーブルやクエリのデータを表示するための枠に過ぎない、っていうお話は何度かさせていただいてますんですけど、その辺皆さん大丈夫でしょうか?

ちょっとややっこしい操作なんですけど・・・。「メインフォームから見た場合の、埋め込みサブフォーム部分のプロパティ」を見ます。

こんな感じで・・・わたしのは、テーブルの名前がそのまんま「コントロール名」になってました。これは、変えない方がよいかもしれません。このままいきましょう。

で、「ソースオブジェクト」っていうところは、埋め込んでるフォーム名になってると思います。

その下、「リンク子フィールド」「リンク親フィールド」ここんとこですね。フォームウィザードなら勝手にここの設定が入ってきてくれるんですが、今回は「リレーションシップオブジェクト」とかやってないので、こういうのは手作業でつないでやります。このふたつのプロパティが空っぽだったり、全然関係ないフィールドが入ってると、埋め込んだフォームはメインのフォームとぜんぜん別の動きをします。つまり、「見積書番号 0001 の見積を見せて」という感じでメインのフォームの方で見積番号 0001 のレコードを表示させたとしても、サブフォームの方は 0001 で注文受けた商品の一覧を出しません。

多分、右端の「ビルドボタン」をクリックすれば、こういう画面が出てきて「これでよい?」って聞いてくれると思うんですけど、どうでしょう?

テーブル作るときにフィールド名をそろえて作れば、 Access がうまいこと理解してくれると思いますよ。

これでオッケーです。

サブフォームなんて、フォームウィザードで作ればいいんですけどね。
でも、こうやって手作りでも作ることができるし、こうやって作ってみると、サブフォームの仕組み、さらに理解が深まっていくと思うんですよ。