練習2:売上集計データベース (2)
これからやることを整理しておこう
今後は、出荷センターから売上の状況を記したテキストファイルが届いたら、「売上集計テーブル」にどーんとインポートすればOKです。
テキストファイルインポートウィザードの操作を間違えなければ、後はAccessがうまいことやってくれます。
ただ、例外って必ず、起きるんですよね。。。
出荷センターから間違っておとといのデータがもう一回送られてきちゃった、とか、文字化けしてた、とか、いろいろ考えられます。
図1:どーん
そこで、こういう処理を作るときは、間にテーブルを挟むことが多いんです。決まりは無いんですけどね。
右図のように、テキストファイル1回分のデータを入れるためのテーブルを用意しておき、バケツリレーみたいなことをやるんです。このテーブルは、一回ごとにデータを全部消し、翌日のテキストファイルのインポートに備えます。
そこで、まず、「売上集計テーブル」とまったく同じデザインのテーブルをもうひとつ、作りましょう。
図2:TEMPってのは一時的なオブジェクトに良く使うな。テンポラリの略だな。
そして、肝心の「売上集計テーブルに追加する」処理ですが、これには、「追加クエリ」という種類のクエリがお役に立ちそうです。
クエリには、今まで作ってきたようなデータの表示をするためのクエリのほかにも、いろいろな動きをするものがあるんですよ。今回はそのうちのひとつ「追加クエリ」を活用します。
ちょっとややこしいので、ゆっくりじっくりやりましょう。
図3:追加クエリという名のクエリ
テーブルのコピー
まったく同じデザインのオブジェクトをもう一つ作りたいなら、コピーして作っちゃうのが手っ取り早いです。
ナビゲーションウィンドウ内の「売上集計テーブル」を右クリックし、メニューから「コピー」を選びます。
図4:コピーだ
何の変化もありませんが、「売上集計テーブル」はクリップボードにコピーされています。
次に、ナビゲーションウィンドウの何にも無いところを右クリックして、「貼り付け」をクリックします。
図5:貼付けだ
「テーブルの貼りつけ」という小窓が表示されます。
今回は、データは要らないので、右下の図のように「テーブル構造のみ」を選んでください。
名前は、TEMP売上集計とか、そんな感じの名前にしてください。
「売上集計テーブル」と区別しやすい名前であればなんでもいいですよ。
図6:テーブル構造のみ貼り付けるのだ
テーブルができました。いちおう、開いて中身を確認しておいてください。
確認し終わったら閉じてくださいね。
図7:空っぽのテーブルができた
テキストファイルのインポート 第二弾
では、この「TEMP売上集計」テーブルに、テキストファイルをインポートしましょう。
一日経過したとして、1月5日のデータをインポートする気分になってください。
図8:テキストファイルキターーーー
今度は、作成済みのテーブルにインポートしますので、真ん中の「レコードのコピーを次のテーブルに追加する」を選びます。
テーブルはもちろん、「TEMP売上集計」です。
OKボタンをクリックすると、テキストインポートウィザードが始まります。
テキストインポートウィザードの扱い方は、20090104.txtをインポートしたときと途中まで同じですので、作業を進めてみてください。
図9:もごもご
先頭行をフィールド名にするの、忘れないでくださいね。
図10:先頭行、先頭行、
今回は作成済みのテーブルにインポートするので、データ型とか、主キーとかの画面は出てきません。
インポート先のテーブル名を確認したら、完了です。
図11:完了、完了
追加クエリの作成
では、いよいよメイイベント、「追加クエリ」を作成します。
といっても、今までのクエリと、作成手順は途中まで同じです。途中でちょこっと、横道にそれる感じ。
では、クエリを新規作成しましょう。
図12:クエリを新規作成といったら?
選択するテーブルは、TEMP売上集計 です。
図13:主役はこいつだ
フィールドは3つとも選びます。
ダブルクリックでもOK、下へドラッグするのでもOK。レッツゴー。
図14:フィールドを選ぶの巻
ここでちょこっと、表示の状態を確認しましょう。
今表示されている内容が、そのままそっくり「売上集計テーブル」にコピーされるような感じになるので、まず、この段階で、追加したいデータが出てきてなきゃアウトなんです。
今日は全データ追加しますからカンタンですけど、「商品番号●●のデータだけ追加したい」なんてときは、ちゃんと出力できているかこの画面でチェックしないとならないですね。
今日はこれでOKなので、追加クエリ作成の過程を味わっていただいたら、デザイン画面に戻りましょう。
図15:出た出た
で、ここで、リボン内の「追加」をクリックします。
これで、単なるクエリ(選択クエリ)が、追加クエリに返信するんです。
図16:変身!追加クエリ!
すると、「追加」というタイトルの小窓が出てきます。追加先の情報を指定する必要があるんですね。
どこに追加するんでしたっけ?
図17:えーと
これでほぼ完成です。
右図の、緑のほうが追加元、ピンクのほうが追加先のフィールドです。
フィールド名が違う場合は微調整が必要ですが、今日はそろえてあるのでAccessがそれぞれ対応するフィールド名を並べてくれてますね。
図18:上と下、フィールド名が揃ってる?
では、この追加クエリを実行しましょう。
左上の「実行」ボタンをクリックします。
普通のクエリ(選択クエリ)を作っているときはあまり意識しなくていいんですが、追加クエリの場合はちょっと違う・・・左上の「結果」というところのボタンです。
結果がちゃんと出力されるかどうか、データシートビューに切り替えて表示したいときは「表示」。実行して追加先のテーブルにデータを追加したいときは「実行」、です。
すると、メッセージが出ますよね。これぞ、追加クエリの実行の証です。「はい」ボタンをクリックします。
図19:はーい
「はい」ボタンをクリックすると、クエリが実行されるんですが、見た目には何も起きていないですね・・・。
いえいえ、しかし、ちゃんと実行されているんです。
「売上集計テーブル」に1月5日のデータが追加されているはずですよ。
このクエリに名前をつけて、閉じましょう。
図20:なんか味気ないの
名前は何でもいいんですが、できれば、追加クエリであることが判別しやすい名前をつけておくといいですよ。後で何かとわかりやすいです。
例えば、クエリのQと、追加(Add)のaで、名前の先頭に半角英字で”QA”とつけるとか。あるいは、先頭に”追加”という文字を入れるのでもよさそうです。「追加_売上集計」とか。皆さんご自身が把握しやすい名前をプリーズ。
図21:名前つけて保存するよろし
標準的なナビゲーションウィンドウの表示なら、関連するテーブルの下にクエリやフォームなどのオブジェクトが表示されます(ナビゲーションウィンドウの表示はいろいろ返ることができるので一概には言えませんが)
このクエリは、開くと、つまりここからダブルクリックすると、実行されます。つまりつまり、今「TEMP売上集計」に入っているデータを、「売上集計テーブル」に追加しようとします。「1月5日のデータはもう追加が終わってるのに?」そう。なのに、また追加しようとします。一度追加済みのデータかどうかなんて、追加クエリにはわかりません。
なので、不用意にダブルクリックしないこと。
図22:アイコンの形にも注目だ
追加クエリには触れないようにして、「売上集計テーブル」の方をダブルクリックしましょう。
1月5日のデータ、追加されてます?
と、ここまでで一区切りです。
いずれ復習する機会があると思いますが、追加クエリの目的や役割や作り方、おさらいしておいてくださいね。
図23:おおー2日目のデータが入った。
1日分の作業を通してやってみよう
では、一日経ったとして、1月6日のデータを取り込む作業を通してやってみましょう。
出荷センターから1月6日分のデータ 20090106.txtが届きました。さてさて?
(1)「TEMP売上集計」テーブルを開き、昨日のデータを全部削除する。
右図の部分をクリックすると全レコード選択できるので、全レコード選択した後、Deleteキーを押します。
図24:ステップ1: 「TEMP売上集計」を空っぽにしまーす
消す際、「ほんとにいいですか?」的な確認メッセージが出ますので、「はい」をクリックします。
図25:はーい、お願いしまーす
空っぽに成ったことを確認したら、このテーブルは閉じます。
図26:閉じまーす
(2)20090106.txtを「TEMP売上集計」テーブルにインポートします。
インポートの手順は、皆さん、もうばっちりですよね。
先頭行をフィールドにするのを忘れないでね。
図27:今日のファイルをインポートしまーす
(3)インポートが終わったら、追加クエリをダブルクリックします。
図28:追加クエリ行きまーす
確認のメッセージが2度出るので、それぞれ「はい」「はい」とクリックします。
図29:はーいはーい
(4)「売上集計テーブル」を開いて、中身を確認しましょう。1月6日のデータ、追加されてますか?
図30:今日の仕事終わりー
いかがですか?
手順さえ覚えておけば、これでも十分かなあと思うんですが・・・。
もちろん、工夫次第でもっとオートマチックにすることもできるんですよ。でも、いきなり「VBAでどうのこうの」とか、迷宮に突入するようなことはやるべきではないです。私もそんな展開には持っていきたくない。しかし、もうちょっと使い勝手良くしたいですよね。
Access2007の基本的な機能を使うだけでも、まだまだ工夫の余地があるので、無理せず、できることからやってみましょう。
でも、基本は、今の流れです。今の流れをしっかり理解した上で、先に進んでください。
(3)の追加クエリは、まあ、こんなもんなので、(1)のテーブルのデータの削除と、(2)のインポートのところを見直してみましょう。
このページのまとめなど
- いろいろな機能や設定を組み合わせて処理の流れを作るのだ。やることを書き出して整理してから始めよう。
- オブジェクトのコピー。意外と便利だよ。
- 追加クエリはテーブルにレコードを追加するためのクエリ。追加元と追加先がごちゃごちゃにならないよう注意。
作成日:2009-01-14