<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--基本操作を考える
データベース テーブル フォーム クエリー レポート マクロ&仕上げ
1 1 2 3 4 1 2 3 4 5 6 7 B 1 2 3 4 5 6  8 1 2 3 4 5 1 2 3 4 S



■フォームを作る 7■

右端のスクロールバーを動かすと、ちゃんとスクロールしますよね。

「表形式」といっても、表計算ソフトみたいに矢印キーで自由にカーソルを移動できるわけじゃないんで、基本的にカーソルは1レコード内を右側に移動し、「くさや」まで到着したら次のレコードの「社員番号」に移動するようになってます。下矢印キーで下方向にカーソル移動させたくなっちゃうとこなんですが、これは表形式フォームの仕様なのでがまんしましょう。

それをのぞけば、あとはデータシートビューと対して変わらないと思います。データシートビューより、フォントサイズとか色とかチョコチョコ変えることができて、見やすくできると思うんですけど、いかがでしょうね。

データの変更とかもふつうに書き換えちゃえばオッケー。数値のところはマイナスデータだって入力できるでしょう。売上金額とかくさやとか、入力変更してみてください。
・・・別にアンガスくんが嫌いなわけじゃないんですけどね(笑)


と、ここでいくつか、表形式のフォームで役に立ちそうな操作をいくつか・・・。
わたしは「移動ボタン」って非表示にしちゃったんですけど、みなさんどうなさいました?
まあ、スクロールバーがありますから、レコードの移動にはボタンは必要ないと思ったんですが、これだと、今何件データ入力されてるのか、件数がよくわからないですよね。じゃあ・・・フォームの下の方に、入力されてる社員の件数を出すようにしましょうか。

いろんな方法があると思うんですが、無難なのが「関数」を使う方法です。じゃ、やってみましょう。デザインビューに裏返してください。

まず、「関数」が答えを表示するためのテキストボックスを作ります。
テキストボックスをフォームフッターのところに適当にひとつ作ってください。ツールボックスの中から「ab」っていうツールボタンをクリックして(ドラッグじゃないよ)、その後フォームフッター領域のどこかをクリックすれば出てきますよね。
大きさとか位置とかラベルの中の文字(最初は「テキストXX」って出てると思います)は後で変えればいいでしょう。

で、どうするかというと、「コントロールソース」というプロパティを見ます。
ここは普通、基になってるテーブルなど(レコードソース)の中のフィールド名が入ってるもんなんです。他のテキストボックスはみんなそうだと思います。
ウィザードで作ったりすると、この辺自動的にAccessがいいようにやってくれるんですけど、この「コントロールソース」ってとこに、フィールド名が正しく入ってるからこそ、フォームビューに切り替えたとき、各テキストボックスの中にテーブルの中の値がちゃんと表示されるって寸法です。

でも、今みたいにただテキストボックス作っただけじゃ、何を表示するかまだ決まってないんで、「コントロールソース」欄は空欄だと思います。どうでしょう?
こんな風に、コントロールソース欄に何にも指定がないテキストボックスのことを「非連結のテキストボックス」って言います。別にそういう正式名称があるわけじゃないんですけど、まあ、非連結って言いますね。どのフィールドとも結びついてないテキストボックスって感じの意味です。

この欄に、「フォーム上に表示してるものの数」を数える関数を直接入力しちゃおうってわけです。
表形式のフォーム上でレコードの件数を手っ取り早く数えるときに使うのがCountって関数です。よく見るでしょ。他のソフトでも、この関数。

じゃ、コントロールソース欄に、

=Count(*)

と、半角で入力します。Accessに限らず、関数とか式とかに全角文字は使わないですよね。こりゃもうみなさんオッケーだと思います。

()の中はふつう、数えるフィールドの名前とか入れるんですけど・・・例えば、「社員番号」を数える、とかね。でも、この場合、別にどのフィールド数えたっておんなじじゃないですか。まあ、どれ数えても同じかなぁってときは、Count関数の場合、*って記号を使うことができます。
ほんとに関数の基本を押さえるなら、ちゃんとどれかフィールドを数えるって想定して

=Count([社員番号])

って入力した方がよいのかもしれないんですけど・・・まあ、その辺はおいおい極めていってください。今日はあくまでも「表形式のフォームの作り方の基本」を学ぶのがメインですからね。

さて、どうでしょう。フォームビューにひっくり返すと、件数、数えて表示してくれてませんか?

ね?こういうふうに、フォームで使える関数をいくつか知っておくと、結構便利なんですよ。
もうひとつくらいご紹介しましょうか・・・。じゃあ、今度は、同じ要領で「売上の合計金額」を出してみます???

これにはね。Sumっていう関数が便利ですよ。これも他のソフトでもおなじみの関数ですから、察しが付くんじゃないかと思います。

使い方はCountとほぼ同じ。ただし今度は、どのフィールドの値を足し算するのか、ちゃんと指示してやらないとエラーになります。
「売上」ですよね。

=Sum([売上])

[売上]って、半角のカギカッコで囲まなくてもいいんですけど、このカギカッコは、「これはフィールド名ですよ」ってことを暗に示してるんです。
だから、なるべく、こうやって入力する癖をつけておいたほうがよいですよ。特にVBAを使えるようになりたいとか思ってる方は・・・。

ついでに、このテキストボックスの書式とか整えちゃってください。後でもいいですけど・・・。
例えば3桁ずつカンマで区切るとか、ちょっと文字を大きくしとくとか、テキストボックスの位置やラベルなんかも、ちょっとずつ整えちゃってくださいね。お任せします。

単位は、Countの方が「件数」でSumの方が「金額」ですから、それがわかるように工夫してみてください。

例えば下の図のように、Countの方の書式プロパティに #件 と入力しておくと(#は半角ですよ)、テキストボックスの中に直接「件」という漢字も入ってきます。

ちょっとそれはいやだなぁ、という場合は、右側のように、テキストボックスの右側にもうひとつラベルを作って、「円」と入れておけばそれっぽいでしょ。どっちでもよいですよ。
これはお好みだと思いますんでいろいろやってみてお好きな方法を常用するとよいでしょう。


じゃ、もうちょっと凝ってみましょうか・・・おまけです(笑)
みんなで5億円用意しないといけないんですけど、あとどれくらい必要なのか、どれくらいオーバーしているのか、常にわかるようにしたいと思います。

5億円って、ゼロいくつでしょう???ええと・・・500000000 かな・・・。9桁でしょうか。

もうお分かりですよね。

500000000からSum([売上])を引き算すればいいんです♪

テキストボックス適当にもう一つ作って、そのコントロールソースに・・・。

=500000000-Sum([売上])

って入力すればオッケー。イコール忘れないようにしてくださいね。
式ですからね。これも。

できました?

うひー。あと52,894,124円も稼がなきゃならないのか・・・。約5000万円。みんな、ファイトファイト(笑)
じゃあ、ためしに誰かの売上をアップさせてみてください。
入力している最中は変化ないですが、カーソルが次のレコードに移動した瞬間に、Sum関数が新しい計算結果を返してくると思います。
次のレコードに移動した瞬間というか、そのレコードからカーソルがはなれた瞬間、っていう感じでしょうかね。

数値が変わるの、わかります???マイナスの値入れても、ちゃんと答えが変わると思いますよ。
いろいろ数値を変えてみて、どの瞬間に再計算されるか、感覚をつかんでおくとよいでしょう。


余談ですけど・・・。
「500000000」を「5億」って表示したり、「5億」って入力したら「500000000」って認識されるようにしたり・・・ってのは、ほぼできないと考えた方が無難です。
決してできないわけじゃない、工夫すればできないことはないんですが、要するに「日本独自の数字や日付の考え方」にはほとんど対応してない」と考えるべきでしょう。こいつは米国から渡ってきたものですからね。もうちょっと基礎を身につけてから、工夫する術を学ぶとしましょう。
パソコンソフト使って仕組みを作るなら、ある程度の妥協は必要かもしれないですけどね。。。


いろいろできそうでしょ?もちろんこれで終わりじゃないですよ。まだまだいろんな可能性があります。
でも、目的もなくやみ雲にいろいろ操作しててもしょうがない。とりあえずフォームの作り方入門としてはこのくらいにいたしましょう。

操作していただいててだいたい感覚つかめたと思うんですが、ツールボタンやメニューバーの中の機能をかたっぱしから覚えたところで、どうしようもないんですね。とにかくいろいろ作ってみて、カラダで覚えちゃうってのがコツです。その前に、テーブルとフォームがどういう関係でどういう役割を担ってるのか・・・この辺、理屈じゃないんでとにかく用語に振り回されないよう注意しながら覚えていきましょう。

さて、ここで・・・「表形式」のフォームなんか作ってみたんで、ふとこんなこと思いついた方、いらっしゃらないです???

「所属がさくら組の人だけに絞り込めないか」

「売上の多い順に並べられないか」

もちろんできますよ。フォームの中でもフィルタっていう機能を使えばできないことはないんですが、基本はクエリーです。
クエリーっていうオブジェクトを使いこなしてこそ、Accessを使いこなしたといえると思いますよ。というわけで、次はクエリーです。

じゃ、フォームは保存しながら閉じて、データベースウィンドウに戻りましょうか。一息入れてくださいね。