![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000超入門部屋--基本操作をさらに考える |
>00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 |
と、フォームを保存して、フォームビューに切り替えてみてください。
どうでしょう。
ちょっと反応が鈍いような気もしますけど・・・。
でも、ちゃんと、社員名、表示してると思います。
なんかエラーになっちゃってるって方は、もう一度Dlookup関数の構文、確認してくださいね。
ふう〜。やっとココまでたどり着いた・・・。
いろいろやりましたけど、ココからが本番です(笑)え?もう疲れちゃった???そんなこと言わないで。がんばりましょう!
伝票番号を指定すると、その伝票番号のデータが検索されて表示される・・・っていう処理を作ります。
ふう〜(深呼吸)
がんばろう!
まず、フォームヘッダー部分をそっと引き出してやってください。
1センチくらい下にドラッグして、隙間を作りましょう。
で、上の図のように、テキストボックスをひとつ作ります。えー、わたしのは、「テキスト14」っていう名前になりました。
このテキストボックスの中に「詳細部分に表示させたい伝票の伝票番号」を入力するんです。
入力した後、詳細部分には「その伝票番号のレコード」が表示されるようにしたいんで、・・・そうですねえ。
入力して、Enterキーを押したときに、うまいこと絞り込んでくれるようにしましょうか。
じゃ、「更新後処理」というところに、そういう処理を作りましょう。
絞込みに関してはいろんなやり方があるんですけど、ここでは「フィルタ」という機能を活用してみようと思います。
フォームでちょっとしたデータの絞込みをするのに便利ですよ。
あんまり複雑な絞込みだと、書き方が難しいのですけど・・・
今回のように、「伝票番号で絞込み」みたいな感じだったら、フィルタを活用した方がよいのではないかなと思います。
更新後処理のところに、左のようなコードを書きます。
詳しいことは、フィルタ(Filter)プロパティのヘルプを参照してくださいね。
で、フォームを保存して・・・フォームビューに切り替えてみましょうか。絞り込んでくれるかな・・・。
どうでしょう?動きますか?
なんで、わざわざ「テキスト14」なんていう非連結のテキストボックス作って、こんな仕組みを作ってるのか・・・。
もしかして、「詳細部分の[伝票番号]っていうテキストボックスに入力すれば絞り込むんじゃないの???」なんて思っちゃってる方、いらっしゃいません?
「詳細部分」の伝票番号のテキストボックスに入力するってことは、このレコードの伝票番号を書き換える、ってことになっちゃいますよ。
これってうっかり勘違いしやすいことでもあるので、意味がわからない、という方は、もう一度このフォームじっくり眺めておいてくださいね。
今日は練習ですから、とにかくいろいろいじってみて、疑問に思ってることをひとつずつ解消していってみてください。
さて、この「フィルタ」という機能なんですけど、クエリとはちょっと違った雰囲気の動きになります。
フォームの下の方、レコード移動ボタンのトコ見ると、(フィルタ)って表示になってますよね。
今、このフォームがつかんでるデータはこの1件だけなんです。
解除するには、基本的な方法としては、この「テキスト14」を右クリックして、出てきたショートカットの中から「フィルタの解除」を選びます。
そうすると解除されて、また再び全件表示対象になります。
フィルタを解除するような処理を、「テキスト14」の右側にでもコマンドボタン作って、そのクリック時のイベントに作ってやってもいいのかもしれませんね。
Me.FilterOn=False
でいけると思います。
ここでは解説しませんが、興味ある方は挑戦してみてください。
検索/照会画面に関してはだいたいこんな感じで・・・。
では、また別のことお話していきますね。
「いつだれがなにをいくつ売ったか」という情報を得ることができるようになりました。
んでは、「いつだれがいくら売ったか」という情報を得るためには、どうしたらいいでしょう。
「何をいくつ」まではいらない、1伝票中で合計いくら売ったか知りたい・・・という場合は???
そんなときは、集計クエリを活用してみましょう。
下のようなクエリを作ります。
もうみなさん、だいたいのイメージがあれば、同じようにクエリ作れちゃいますよね。参照するテーブルは3つです。
「売上明細」テーブルを中心にして、社員名を参照するために「社員テーブル」をくっつけます。
商品の売上金額を参照するために「売上明細商品」テーブルをくっつけて、「値段×個数」で金額を出します。
あるいは・・・下のように、[Q_売上明細商品]を使ってしまってもいいかもしれないですね。
これから作る集計表に関しては、どっちの方法でも良いと思いますので、とにかく「値段×個数」で「金額」が出るように工夫してみてください。
このままだと・・・。データシートビューに切り替えると、下のように出てきますが・・・。
何の「並べ替え」の指定もしない状態で出すと、多分「社員番号順」で出てくるのではないかと思います。まあ、とりあえずこのままでいいです。
下の図で行くと、伝票番号119のデータが4件ありますよね。
多分、4品売ったんですよね。
でも、今回は「119の伝票では合計いくらうれたのか」が知りたいので・・・。これじゃちょっと細かくて見るの大変です。
そこで、このクエリを「集計クエリ」にします。
下の図で行くところの、赤い丸印をしたボタンが、切り替えのボタンです。
「現在フィールドグリッドに選んでいるフィールド(伝票番号、社員番号、名前、金額)の中で、最も細かいレベルでグループ化する」ことができるんですよね。
今現在の状態だと、「金額」が毎レコードごとに異なりますから、一番細かいレベルというのが「金額」になります。次に細かいレベルが「伝票番号」です。
これ、集計クエリを作るときすごく重要なとこです。
そうなると、Σにしただけじゃ意味ないんですけど・・・上の図、じっくり見てください。
「金額」を「合計取る」ようにしてます。これで、一番細かいレベル「伝票番号」ごとに、金額の合計を取るクエリになってくれるんです。
どうでしょう。
集計されます???
まあ、後は、必要に応じて「売上日」を加えたり、「伝票番号」順に並ぶようにしたり、工夫してみてくださいね。
あ、「売上日」は、伝票番号が同じなら、同じですよね。ってことは、「伝票番号」が一番細かいレベル、ってことで、変わりないはずです。
SQLってものはたいていそうだと思うんですが・・・Accessのクエリでは、「明細」と「集計」をひとつのデータシートビューに出すことができないんです。
だから、「社員ごとに集計して、さらに伝票番号ごとに集計して」って、2段階のレベルの集計をクエリひとつで作ることは、残念ながらできないんですね。
こういうのはクエリじゃなくて、レポートでやるんですよ。レポートには複数のレベルのグループ化をする能力があるんです。
じゃ、このクエリ、何か名前をつけて保存してください。
レポートの方は、また別の機会にお試しいただくとして・・・。
このクエリをもとに、適当な形の表形式フォームを作ってみましょう。
わたしのはこんな感じになりました。
テキストボックスの大きさとか、数値や日付の書式とか、いろいろ工夫してみてください。お任せしますよ。
![]() |
![]() |
![]() |