<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--アクションクエリ
 [アクションクエリとは] [追加クエリ] [テーブル作成クエリ] [更新クエリ] [削除クエリ]  [マクロで自動実行 1 2 3] 



■活用例 マクロで自動実行 1/3

アクションクエリってどういうものか、大体つかんでいただけました?

小さなことばかりですけど・・・。最初にしっかり仕組みや役割を押さえておかないと、ほんとに何をやってるのかわけがわからなくなりがちです。
特に追加クエリとかテーブル作成クエリなんて、関連するテーブルが複数出てきますから、どれがどうだったかほんとにわかんなくなっちゃいます。
ただ作り方を覚えるのではなくて、どういうふうにテーブルが関連してくるのか、その辺をしっかり見ておかれるのがよいと思いますよ。

多分、ただ作り方の手順を覚えただけじゃ、どういう時役に立つのかイマイチつかめない・・・という方もいらっしゃると思います。

では、こうしたアクションクエリを、どうやって使っていくか・・・というお話を・・・。
決して決まった使い方はないので・・・・・・・・これはあくまで「一例」です。
アクションクエリも含めてですが、MS-Accessは、こういうオブジェクトをうまく工夫して使う、っていうスタンスを取ります。
「アクションクエリっていつ使えばいいの?」じゃなくて、処理の中に組み込んでいくのです。

そういうつもりで見ていっていただくと、もっと理解を深めていただけるんじゃないかと思います。
では、マクロを使って、いくつかのアクションクエリを自動実行させる仕組みを作ってみます。


処理の手順の確認を・・・・。

まず、下の図のように、「練習のテーブル」の中に数件レコードが入っているとします。
で、「結果」のフィールドにいくつか、チェックがついているものとします。

チェックのついているレコードの「売上」を1.5倍にします。
と、いうクエリを作っておいて実行します。その名も「Q_売上更新クエリ」



このクエリを実行すると、練習用のテーブルの中の、指定された「売上」だけ、1.5倍になるはずです。



で、このテーブルの中から、「結果」にチェックがついてるレコードだけ取り出し、「番号」「名前」「売上」の3つのフィールドを「結果ばかりのテーブル」という名のテーブルへ書き出します。
・・・・というクエリを作ります。このクエリの名前を Q_チェック商品追加クエリ とします。

そうすると、「結果ばかりのテーブル」というテーブルに、データが追加されてるはずです。



そしたら、追加したレコードは、おおもとの「練習のテーブル」から削除します。
もう「結果ばかりのテーブル」に移しましたからね。このクエリの名前が Q_結果オーライ削除

と、処理済のレコードが削除され、また次の処理を待つ状態になります。




と、こんな感じの処理を作ってみようと思います。
もちろん、これら3つのクエリを、順順にダブルクリックしていくだけでも、同じ処理はできるんですよ。
そうやって使ってらっしゃる方もたくさんいらっしゃいます。
でもココではもう一歩進めて、マクロで自動化するところまでやってみようと思います。

ただし、ここでお約束です。
いきなりマクロ化しないこと。
なんでもそうですけど、少しずつ作りこんでいかなければ、エラーが起ったり不具合が出ても原因がわかりません。
アクションクエリひとつひとつの検証もろくにしないで全部マクロ化して、「なんかうまくいかないんです〜」とか言われたって、どうしようもないです。
ここでは、少しずつ少しずつ作りこんでいく手順をお話します。
段取りを見ていただいて、その段取りとコツみたいなもんを、みなさんのデータベース作りの中で役立てていただけるとうれしいです。




・・・では、まず、「結果ばかりのテーブル」を作成します。
とりあえずこんな感じで・・・。


主キーはなくていいです。
オートナンバー型のフィールドなら、つけなくていいです(あんまり意味ないし)
「主キーはいらない」っていう感じで保存してください。



そしたら、まずひとつめのクエリを作ります。


Q_売上更新クエリは、こんな感じになりました。
更新クエリの作り方の手順を思い出しながら挑戦してみてくださいね。



次に、
Q_チェック商品追加クエリを作ります。
追加先は「結果ばかりのテーブル」です。
え?ど、どうするんだっか???って、混乱しちゃってる方、いらっしゃいません?大丈夫ですか?


追加先のテーブルと、このクエリのもとになるテーブルと、ごちゃごちゃにならないよう、その辺もう一度おさらいしておいてくださいね。



追加先のテーブルは、追加クエリに切り替えたときに出てくるダイアログの中で指定をするんでしたよね。
「結果ばかりのテーブル」をここで指定すれば、抽出されたレコードはこのテーブルの中の対応するフィールドに追加されていきます。


で、追加したレコードは削除をします。
こうすることで、あたかもレコードが移動したかのような処理を作ることができますよね。


ポイントは、「全部抽出条件が同じ」ことですよね。
ここで抽出条件を忘れたら、「練習のテーブル」の中身が全部削除されてしまいます。




いろんなクエリができたと思います。
クエリも他のオブジェクトもみんなそうですけど、「名前の順」にならびます。
名前の順っていっても・・・漢字でつけちゃうと、何順なのかよくわからなくなっちゃいますけどね・・・。

名前の付け方とかも工夫して、おなじような処理、続けて動かしたいアクションクエリなどは、名前をある程度そろえておくと(頭二文字くらいを同じにしておくとか)、あとで見やすいかもしれないですよ。
多分、もうある程度みなさん、オブジェクトの名前の付け方、ご自分のルールって見出してらっしゃるんじゃないかと思います。
これは人に言われてどうのってのじゃだめですよ。
みなさんが、みなさんなりにわかりやすい、使いやすい名前付けのルールを見つけていかなければ・・・ね。