![]() |
||
<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2002チョ〜入門部屋>MS-Accessを使いこなすために・・ | ||
で、このフォームから労働時間の「入力」までやらせるのか、このフォームは照会専用で、日々の労働時間の入力はさっき作ったちっさい単票フォームのほうから行うようにするのか、によって、フォームのプロパティを調節しておきましょう。
ほら、「追加の許可」とか「更新の許可」っていうプロパティがどっかにありましたよね。
たとえば、このフォームは照会専用ということなら、メインのフォームとサブフォームと両方のフォームプロパティで「追加の許可」をいいえに設定しておけば、新規に追加することはできなくなります。でも、もうこのフォームから入力も照会もみんなやっちゃおう!という場合は、「追加の許可」がはいになってないとまずいですよね。
うーん、でも、お奨めは、「入力」と「照会」は分けて考えて、このフォームからさっきの入力フォームを開くようにするとか、かなぁ・・・でもこれはケースバイケースだと思うんで、実際に入力するとき、照会するときの状況を考えて使い分けてみてください。
今回は、どうしようかな・・・。
「労働時間」の入力をするフォームはさっき別にひとつ作ったので、このフォームでは「照会専用」にしようかな。
でも、時間の訂正くらいはできるようにしておいたほうがいいでしょうかねぇ。
さらに、社員の情報(名前とか、時給とか)を変えたい場合は、このフォームからも訂正ができるようにしとこうかな・・・。
そこで、
メインフォーム:そのまま
サブフォーム:「追加の許可」だけ いいえ
っていう具合にしてみようと思います。じゃあ、やってみましょう。
このプロパティの場所、覚えてますか?
「フォームプロパティ」のなかの「データ」っていうところを見るんですよ。
上の図でいくと、赤い丸印のところをダブルクリックすれば「メインのフォームのプロパティ」、緑色の丸印をダブルクリックすればサブフォームのほうのプロパティが出ます。
画面の中ごちゃごちゃしてわかりにくいときもありますけど、少しずつ慣れていってくださいね。
ではさらに、新しい技(というほどのもんでもないけど)をひとつふたつお話しましょう。
働いた時間の合計を求めるときのやり方です。
まず、改めて確認していただきたいのは、「労働時間」が入力されているのは「サブフォーム側」であるということです。
サブフォームとメインフォームはくっついていて、同じ空間にあるように見えますが、実際には個々に独立したフォームです。
労働時間の合計自体はSum関数で求めることができますが、このSum関数を入力するところは、サブフォームのほうのレポートフッターかヘッダーになります。
んじゃまず、そこのとこまでやってみましょうか。
サブフォーム部分の、下のほうを見てみてください。
フォームフッターというところをそっとドラッグすると、フッター部分が出てくると思います。
そっーとですよ。
で、このフッター部分に、テキストボックスをひとつ作りましょう。
これ、ツールボタンをドラッグしようとする人がたまにいるんですけど、違いますよ。
ツールボックスから「テキストボックス」のツールボタンをクリックして、その後、フォームフッター部分をクリックするのです。
テキストボックスの大きさとか、ラベルとかは、後で調節しましょう。
とりあえず、今作ったテキストボックスの「プロパティ」を見てみてください。プロパティがどうしても出しにくかったら、ツールバーに「プロパティ」っていうボタンがありますから、これ使うようにするといいですよ。
「データ」っていうところに「コントロールソース」っていうプロパティがあります。
いわゆる、「このテキストボックスの中に何を表示するのか」を指定するプロパティで、たいていは、テーブルとかクエリの中の「フィールド名」が入ります。
でも今回は違いますぞ。
こんなふうに、半角のイコールで始まる「式」を入力します。
しかも、「このフォーム内の労働時間をすべて合計する」という意味でSum関数っていう関数を使います。
これ、サブフォーム内のテキストボックスなので、これで「メインフォームで表示している社員の、労働時間の合計」になるはずなんですよ。
「労働時間」っていうのは、フィールド名っていうか、フォーム内のテキストボックスの名前です。
ちゃんと実在するテキストボックスの名前を入力しないと、計算されませんから、確認しながら入力してくださいよ。皆さんの作ってるフォームの中に「労働時間」っていうテキストボックスがあるから、=sum(労働時間) なのです。
Enterキーを押したり他のところにカーソルを移動させたりすると、カギカッコがつくと思いますが、それはそれでオッケー。
じゃあ、ちょっとだけ、フォームビューに切り替えてみてみましょう。
フォームビューへの切り替えは、左上のツールボタンをクリックです。
わたしは3日分くらいずつ入力してあるので、こんなふうに出ましたけども・・・。
とりあえず、#Error とか #Name とかにならなければオッケーでしょう。
#Errorとかになっちゃった人は、もう一度Sum関数のつづりなどを確認してみてくださいね。
さて、あとは、見栄えの問題になるんですけれど・・・。
サブフォームの中のフッター部分じゃなくて、メインのフォームのどこか好きなところに表示させたいな・・・なんて、思いません?
んじゃあ、ためしに・・・。
メインフォームに同じようにテキストボックスを作って、ここに同じようにSum関数を入れてみましょう。
で、フォームビューに切り替えると・・・。
ギャハハ。「エラー」だって。へえ、カタカナで出るのか。
これじゃだめなんですよ。だって、メインフォームには「労働時間」なんていうテキストボックスはありませんからね。
いやー、どうしましょう。ハハハ。
う〜んと・・・かくなる上は、サブフォームで計算させた値を、このテキストボックスに代入しちゃいましょう。
ここで、ワンポイントメモです。
今回、わたしのフォームでは、「メインフォームから見たサブフォームのある位置(サブフォームコントロール)」は「労働サブフォーム」という名前です。皆さんはなんて名前にしました?ほら、ウィザードの最後のほうで。フォーム名つけたでしょ。
それから、サブフォームのほうに作った非連結のテキストボックスの名前、なんでした?わたしのは「テキスト6」です。6だけ半角になってました。
確認できたら、メインフォームのほうに今さっき作った非連結のテキストボックスに
=労働サブフォーム.form!テキスト6
って入力します。サブフォームコントロール名の右側は半角のドット、その右側に半角でform!、その後に、サブフォーム内でSum関数の答えを出してるテキストボックスの名前です。半角のカギカッコはあってもなくてもどっちでもいいです。
じゃあ、テストしてみましょ。
フォームビューに切り替えて見てみてください。
ついでに、フォーム下部分の「レコード移動ボタン」を使って、次のレコードに移動してみてください。
他の社員の情報を表示したら、その社員の労働時間の明細と合計が表示されるようになります?
ここまでできたら、サブフォームのほうのテキストボックス、いらないですよね。
何も2箇所で合計時間を出す必要もないし。
でも、サブフォームのほうのテキストボックスを削除しちゃったらだめだってことは、わかりますよね???だめですよ。
ここが情報源なんだから。
こういうときは・・・。いくつか方法があります。
まず、テキストボックスを非表示にしてしまう方法・・・「可視」というプロパティを使います。
ラベルはいらないと思いますんで、ラベルのほうだけ削除しちゃってよいです。
でもって、テキストボックスのほうのプロパティを表示させましょう。
「書式」っていうプロパティ群の中に「可視」っていうのがあるので、いいえにしてみてください。
これは、「あるけど、見えないようにする」ためのプロパティです。
フォームビューに切り替えてみると・・・サブフォームのフォームフッター部分、まっさらになります。
でも、これだと、見えないだけで、フォームフッターの中にテキストボックスはあるので、フォームフッターをちっちゃく折りたたんでしまうことはできないんですね。うーん、もうすっかり折りたたんでしまいたい場合は、かなりの荒業ですが、
上のように、テキストボックスの「高さ」をゼロにしちゃえばいいと思います。
マウスでドラッグすれば、まるで1本線みたいになりますよね。
で、さらに、「フォームフッター部分」の一番上にぺたっとくっつくように移動させます。いきおいあまって「詳細セクション」に移動させちゃわないようにしてくださいよ。フォームフッターの、一番上、です。
でもって仕上げに、フォームフッターの一番下の境界線のところをドラッグして、折りたたんでしまえば・・・。
サブフォーム部分のテキストボックスは隠れて、まるでメインフォーム上で労働時間の集計をしてるみたいになります。
こういうのは、決まったやり方はないと思うんで、とにかくいろいろ試してみて基本的な仕組みを理解して、あとは工夫次第、ってところですね。。。。工夫すれば。
え?なんか労働時間の合計が表示されるのが、ワンテンポ遅れる?
そうなんですよ。これは、どうしようもないんです。
だって、サブフォームが表示されてから、合計の計算が始まるんですから・・・どうしても、ワンテンポ遅くなっちゃいます。
どうしても気になる、何とかしたい、となりますと、他の方法を考えないといけません。
他の方法で、しかも計算がワンテンポ遅れないようにするためには、さらに工夫が必要になります・・・。
とりあえず、今日のところはこれくらいにしましょうよ。ね。
今こしらえたテキストボックス、大きさや位置を調節して整えておいてください。
![]() |
![]() |
![]() |