<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 



さあ、どうでしょう・・・。フォームビューに切り替えて、「次の入力ボタン」をクリックしてみます。
さっき、6と7は空回りレコードとして使っちゃったんで、最大数の7に1足して、8という伝票番号のレコードが出来上がってきました。
で、「終わり」ボタンをクリックしてフォームを閉じます。

と、今までなら「8」という伝票番号のレコードも意味もなく残っちゃってたはずなんですけど・・・ないですよね?
「社員番号」が空っぽだったので、Undoされました。

「社員番号」と「売上」の両方が空だったら、とか、判断をもっと複雑にさせたい、ということもできそうですよね。
あとはIf文の書き方次第だと思いますよ。
まあでも、今日はとにかくなれるってことと、いろいろやらんといけないんだなってことを理解いただきたいんで、あまり欲張らないようすすめていってください。
もちろん、本格的なデータベースを作るとなると、もっといろいろ考えないといけないことが出てきそうですもんね。
でも、どういうところに気をつけていればよさそうか、その辺の判断にはなると思いますよ。

じゃ、ある程度テストができたところで、余分なレコードは消しておきましょうか。
左端のレコードセレクタのところをうまくドラッグして、Deletキーか、削除ボタンをクリックすれば消えます。

なんか確認メッセージが出てくると思いますが、「はい」のボタンをクリックして削除しちゃってください。


さて。いろいろ見てまいりましたが、ココまでいかがでしょう。結構めんどくさいですよね。
もしかしたらここまで作りこむ予定の人はあまりいないのかもしれません。
でもでも、逆を返せばいろいろ作りこめるってことですから、とにかくいろいろアイディア出して挑戦してみてください。

さあて、次に、「次の入力ボタン」を連続してばかばかクリックしちゃったときのことも考えましょう。
このボタンクリックすると、新規レコード行に移動して、新しい伝票番号作るだけで、ボタンを連続してクリックすればわやくちゃになりますよね。
これも、なんでそうなるか、ということは皆さんオッケーですよね。Accessのバグじゃないですよ。わたしたちの配慮がまだ足りないのです。

ここでもおなじことをしましょう。
ただし、今度はもしかしたら、うっかりしているのかもしれません。なんも言わずにUndoしてしまうのはどうかな・・・と思うんですけど・・・。
そこで、今度はUndoせずに、「ちゃんと入力するようメッセージボックスを出して促し、新規レコードには移動しない」という仕組みを考えてみます。

では・・・「次の入力ボタン」のクリック時のイベントに、もう少し手を加えましょう。

もうIf文のところはいいですよね。

If IsNull(Me![社員番号]) Then

 
MsgBox "ちゃんと入力してやー"

 DoCmd.GoToControl "社員番号"

 Exit Sub


End If

できました???


とにかく、「不完全なレコードを残さないよう」に、いろいろ工夫しなくてはなりません。
フォームのデザインや前後の仕組みによっては、もっといろいろ考えなくちゃならないことも出てくると思いますが、これが基本。
ソースコード丸写しとかしちゃわないで、来るべきときに備えてベースになる部分をしっかり押さえちゃってくださいね。
後は、フォームの「閉じるボタン」を隠してしまえば、とりあえずこちらの思惑通りの動きを見せてくれるんじゃないでしょうか。

「フォームの書式プロパティ」の中に、閉じるボタンやコントロールボックスの表示をコントロールするプロパティがありますから、その辺を使ってみてください。

フォームのデザインや処理の内容などによっては、もっといろいろなことを考えなくちゃならないかもしれないですね。
これは、とにかくいっぱい入力してみて、普段の業務と同じオペレーションを繰り返しながら伝票入力してみないことには見つからないことも多いと思います。

いっぱい伝票入力してみましょう。


さて。たくさん伝票の入力ができました。みなさんもできました?
いやー、何ヶ月か活動を続けたので、売上明細テーブルの中身が2528件になりましたよ。いろいろありましたねぇ。

・・・まあ、こんなに入力なさってはいらっしゃらないと思いますが・・・。

もしよかったら、データ、お分けしますよ。2500件くらい入ってる状態で、いろいろテストしてみたいと思いません?
テキストファイルの形で、2528件入ってるデータを用意してますので、これを取り込んで使ってみません?
「テキストファイルのインポート」という操作も、いっしょにお話いたしましょう。
あ、別にいいや、という方、あるいは「ぜんぜん違う形式のテーブルを作ってココまで進んできたので・・・」という方は、とりあえずあと2〜3件入力してみて、売上明細テーブルを少しにぎやかにしてから先に進んでください。

自分でデータ入力するからいい。先に進む 


★テキストファイルをインポートしマース★

まず、今何件か入力しているレコードは、全部削除しちゃってください。伝票番号がダブっちゃう可能性がありますもんね。
まあ、エラーになるからヘンな状態にはならないと思いますけど・・・。とりあえずテーブルの中身は空っぽにしておいてくださいね。削除の仕方は・・・このページのちょっと上に載ってるんで、おさらいも兼ねて・・・。

空っぽになったら、テーブルはいったん閉じておいてください。
で、取り込んでいただきたいのが・・・。下のダンボール箱です。

ファイルの中身が出てきたら、なんか適当な名前を付けて保存をしてください。
ブラウザの「ファイル」→「名前を付けて保存」で、保存できると思います。
多分、テキストファイルとして保存させてくれると思うんですけど・・・。ブラウザによってちょっと違うかもしれないです。
とにかく、テキストファイルの形で保存してくださいね。ファイル名を uriage.txt として、お話を続けます。

テキストファイルというのは、メモ帳とかワードパットとか、秀丸とかそういう「エディタ」というやつで開いて見ることのできる、文字だけで構成されたファイルのことです。

こんな感じで・・・カンマとか、タブ記号とかでフィールドが区切られてます。このファイルはカンマで区切られてます。カンマ区切りのテキストファイルのことを特別にCSVファイル、なんて呼ぶこともありますね。

このファイルは、ちょっとサイズが大きめなんで、メモ帳だと開けないと思います。
(メモ帳で開くことができるファイルサイズは64kbまで)




で、メニューバーの「ファイル」「外部データの取り込み」を選びます。さらに「インポート」を選びましょう。

で、さっき取り込んだuriage.txtを選びます。↓ファイルの種類を「テキストファイル」に変更することをお忘れなく〜。

すると、勝手に「テキストインポートウィザード」というのが始まって、正しく外部ファイルをインポートするための設定確認画面がいくつか表示されます。
1画面目と2画面目は、多分そのままでいけると思うんで、3画面目まで「次へ」ボタンで進んでください。

ふつうそのままだと、「新規テーブルに保存する」っていう方がチェックされてると思います。
これだと、新しいテーブルが作成されることになるんですよ(あたりまえか)。
それでもいいんですけど、今回はもともと作成済みで、さっきレコード削除して空っぽにした「売上明細」テーブルにインポートしてきたいんで、「次のテーブルに保存する」っていう方をクリックして、「売上明細」テーブルを選びます。

で、あとは適当に次へ進んで、最後に[完了]ボタンをクリックしてオッケイ。
画面の左下のステータスバー欄に「じわじわじわ〜」とじわじわがでます。

完了したようなメッセージが出てきたら完了(あたりまえだ)!
さっそくテーブルの中身を開いてみてください。どうですー。わたしが苦労して入力したデータが入ってるでしょう???

テーブルだけ見ているとイメージが湧かないかもしれないですけど、これでとりあえず、「いつ」「誰が」「いくら売ったのか」がわかりますよね。

毎月毎月、何十件も何百件も伝票が発生するような処理だと、当然テーブルの中身は増えていきますよね。
どんどん。そんな時、「社員番号」の他にも「名前」とか「所属」みたいなデータを、このテーブルの中に持つようにしてたら、このテーブルすっごくばかでかくなっちゃうと思いません?
かといって、必要なフィールドまで削っちゃうと思ったような結果を出せませんよね。

この4つのフィールドは、全部異なる役割を持ってるんです。それはみなさん、見えてると思います。
でも、「社員番号」と「名前」は、同じですよね。
つまり、「伝票番号2511で12634円売り上げた人の社員番号が0023」ってことがこのテーブルの中でわかってれば、その人が誰で、どこの所属なのか・・・ということまでこのテーブルにしるしておく必要はないわけです。


まあ、これでどんな処理ができるのか、もうちょっといろいろやってみてから考えてみましょう。