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



で、このテーブルをもとに、追加クエリを作ります。追加先のテーブルは[W見積明細テーブル]です。
[行番号]が追加されるよう、レコードの追加欄の指定をします。
でもって、「見積番号」をどこから拾ってくるか、というところなんですが・・・。見積の入力のフォームからとってきましょうか。

そいつを、[見積番号]フィールドに追加できるよう、指定をしてやります。
これでオッケー。クエリに何か適当な名前をつけて保存してください。

このクエリを、見積明細を入力する前に動かして、レコードをこしらえてしまおう、というわけなんですが、タイミングはどうしようかな・・・。

いろいろ考えられると思うんですけど、見積番号がついた直後にしましょうか。
フォームの「挿入前処理イベント」に作った見積番号の採番処理の後で、クエリを開くようにしてみましょう。

とりあえずちゃんと働くかどうかテストしてから、Docmd.SetWarnings Trueを、今追加したDocmd.Openquery .....の下に移動させてください。
そうすれば、確認メッセージは出なくなりますよね。いちおう、メッセージを非表示にするのは、ひととおりテストが終わった後にしましょう。
正しく動いてるのかどうか、わかんなくなっちゃいますもんね。

でもって、ちょっともったいないですけど、明細フォーム(サブフォーム)の方の挿入前処理イベント欄に作った「行番号の自動採番」のイベントを、削除しましょう。
プロパティの「イベントプロシージャ」っていう文字を削除して空欄にすれば、処理は動かないと思います。


じゃ、実験です。
フォームを一旦保存しながら閉じて、見積入力フォームを再び開いて、日付の入力とか、顧客番号の選択とかやってみると。。。

メッセージが出ます?メッセージは2回出ると思うんですが、2回目のメッセージの方で15件追加するようなメッセージが出れば、オッケーですよ。
ダミーテーブルに書き込んだ1から15までのレコードが、W見積明細テーブルに書き込まれるって寸法です。
メッセージに答えると、こうなりますか?空行が明細フォームの方にたくさんできました?↓

で、あとは、商品番号と個数を入力すればオッケー。

余分な入力をしちゃったとしたら、行ごと削除するのではなく、商品番号と個数を、Deleteキーかなんかで削除します。
つまり、「商品番号欄に入力されている数字を全部消す」っていうことなんですけど、どうでしょうか?
多分、エラーにはならないと思うんですけど・・・。

今回は、このフォームの基になっているテーブルが、常に「1件分の見積」を持つような仕組みで動かそうとしてますんで(ワークテーブルってことでね)、こんな操作もありかな、って思ってやってみました。
印刷する直前に、こうした追加クエリを動かして、ダミーのレコードを作ってもいいですね。

ただ、「じゃあ、16件以上の明細を入力したいときはどうすんの?」って言われるとなかなか大変かなと思うんですが・・・。
まあ・・・この考え方でも、やりようはあるんじゃないかと思います。
でも今回は・・・ここまでにいたしましょう。ね。ね。