<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 MS-Access2002 なりきりデータベース設計
  1 2 



漕げよマイケル データベース作成 1

それではまず、一番最初にお話をした、↓この図をモトにしてデータベースをこしらえてみましょう。
ところどころ操作の補足をさせていただいてはおりますが、基本的には、「MS-Access2002の基本操作は理解できている方」を対象にお話を進めていきますので、不明なところなどがありましたらその都度[F1キー]を押してヘルプってくださいね。

真ん中の「蓄積されるデータ」というところが、テーブルにあたります。
このテーブルを中心にして、入力するためのフォームと、集計表などの「出力モノ」を作っていきます。
まあ、これはそんなに難しくはないですよね。

こんな感じですかね↓。



主キー?
うーん、そうだなぁ。これは賛否があるかもしれませんが・・・。
前にお話したとおりで、リレーショナルデータベースというからには、必ず「そのテーブルの中の中心となるフィールド」って、あるはずなんですよね。でも、それって、テーブルがふたつみっつある場合に「他のテーブルとどういうつながりを持つか」ということに関わってくるので、このデータベースの中にテーブルが一個だけ・・・という場合は、主キーはなくてもいいかなぁと思ったりいたします。

ただ・・・。もし、このテーブルを「データシートビュー」で開いて直接内容を見ることが多い場合で、「入力順にデータが並んで表示されてるほうがいい」あるいは「入力順にデータが並んで表示されるべき」または「入力順にデータが並んで表示されないなんておかしい」と考えておいでの方は、オートナンバー型のフィールドを作ってそいつを主キーにしておくといいでしょう。
特に他のテーブルとの関連を持つためではなく、単に「このテーブルを開いたときの並べ替えのために使う」ということで。
で、オートナンバー型のフィールドを作ったんなら、それを主キーにしておけば、まあたいてい、データシートビューなんかを開いた際、何も配慮しなくても主キー順に並んで表示されてきますからね。
他のコーナーでお話したことの繰り返しになっちゃいますが、リレーショナルデータベースってのは「レコード単位で物事を考える」データベースですからね。テーブルってのは、開くと表の形でデータが見えますけど、別にいつも表の形しているわけじゃなくて、単に「レコードが集まって表の形になる」だけですからね。


山で拾ったどんぐりを袋の中にどんどん詰めて持ち歩く場合、必ずしも拾った順番に整列して袋の中に入ってるわけでもないじゃないですか。家に帰ってきて袋を逆さにしてゴザのうえにどんぐりを広げたとき、拾った順番に出てきます?そうとは限らないですよね。

もし、拾った順番に出したいなら、袋に詰めるんじゃなくて、どんぐりを板に貼って持ち運ぶべきでしょう。
どのどんぐりがいくつあるか、すぐにわかって見やすいですが、持ち運びには不向きな保存方法じゃないですかね。

これって、すごく「表計算ソフト」っぽいデータの持ちかた、↑ですね。
このほうがわかりやすくて便利な場合もありますが、どんぐり集めのときは、袋に詰めて持ち運びたいです。
データベースと表計算ソフトの使い分けは、案外その辺にあるのかも・・・。

そんなわけで、MS-Accessに限らず「リレーショナルデータベース」なんて名のもとにテーブルをこしらえるときは、必ず

  ・他のテーブルとどう結びつくか
  ・テーブルを開いたとき、どういう並び順でレコードが並んでるのが基本形なのか

を、よく考えておくべきなんですね。
テーブルってのは、袋の中にどんぐり詰めるのと同じようにデータを保存しますから、並び順とか表示順とかは、クエリやフォームやレポート側で考えることなんですよ。

マイケルもわかったかい?

なんだい、その情けない顔は・・・。
そんな顔してたって誰も助けちゃくれないよ。あんたの店のことなんだから、あんたがしっかりしないでどうするんだい。
皆さんだってあんた助けるためにここにいらしてるんじゃないんだよ。
いつまでもグズグズしてないで、いい加減しっかりしな。



このまんま保存するか、あるいはテーブルのウィンドウを閉じようとすると、

名前を付けて保存するかどうかメッセージが出ますよね。
あるいは、名前を付けて保存するためのボックスが表示されるか。

で、この次に、

なんかワケのわかんないことを↑言ってきますよね。
ここで、[はい]のボタンをクリックすれば、勝手にオートナンバー型のフィールドが追加されます(フィールド名はIDとつく)。
この仕様を利用して、オートナンバー型のフィールドを作っちゃってもいいです。
このデータベースに、このテーブル1個だけで、ほかにテーブルができないことがわかっていれば、オートナンバー型のお任せ主キーでも問題ないでしょう。あるいは、データシートビューで開いたりすることがなくて、特にレコードの並び順とかどうでもいいなら(クエリやレポートで配慮するから、という意味で)、主キーはいらないと思います。

[いいえ]のボタンをクリックすれば、主キーなしのテーブルになります。
今回は、主キーなしでまいります。
ので、[いいえ]のボタンをクリックしました。

主キーなしのテーブルです。

次に、このテーブルをもとにして入力フォームを作ります。
もう簡単に、オートフォーム機能でサクっと作っちゃっていいんじゃないかと思います。

これで十分に↓フォームとして役割を果たすと思いますが、いくつかフォームのプロパティをいじってみましょうか。



じゃあ・・・。

 フォーム全体のプロパティ:
     標題:売上入力フォーム
     スクロールバー:なし
     TABキー移動:カレントレコード
 売上日テキストボックスのプロパティ:
   既定値:Now() Now関数という関数を入力する
   テキストボックスの幅を少し広げる

こんな感じでどうでしょう。他にも工夫できそうなところがあったら、おさらいがてら挑戦してみてください。
Now関数の使い方は、ヘルプ見てみてください。まあ、MS-Excel使ってる人にとってみたら結構おなじみの関数ですよね。

え?どうすればいいのかわからないって?
んもーしっかりしてくださいよ。
じゃあ、フォームビューからプロパティの変更ができる状態までの段取り、おさらいしますよ。

 ■左上のビューボタンでデザインビューに切り替えて、




 ■デザインビューの状態になったら、ツールバー中ほどの「プロパティ」ボタンをクリックするとか何かして、プロパティを出して、




 ■上の部分のリストボックスで、「どのプロパティが見たいのか」を切り替えます。

   操作したい部分のプロパティの変更ができますよ。
   いろんなやり方がありますけど、どうしてもわかりにくいときは、このリストボックスで切り替えればいいと思います。


 ■後は、タブを切り替えてお目当てのプロパティを探してください。



さらに、今回、[売上日]は特に入力の必要がなく、Now関数を使って日時を自動的に入力できるようにしましたんで、フォームを開いたらお客の種類のところにカーソルがあると嬉しいんですよね。
そこで、メニューバーの[表示]→[タブオーダー]をクリックして、カーソルの移動順序を若干変えて調整してみましょう。
このやり方がけっこう便利かもしれません。




うまいこと左側のセレクタ部分をクリックして黒く反転させ、うまーいことドラッグして[売上日]を下のほうに移動させてしまいましょう。
カーソルはこの順番で移動をします。



[売上日]の入力をできなくしてしまう方法もありますがね。
([売上日]テキストボックスのプロパティで、「使用可能」「編集ロック」というのがあるので、これをそれぞれ”いいえ”
”はい”にすれば、このテキストボックスにカーソルが入らなくなります)
まあ、でも、ちょっと日時を調整することもあるかな、と思い、今回はカーソルの移動順序だけにしました。



フォームの名前を[売上入力フォーム]にして、保存し、閉じました。




改めてフォームを開くと、こんな感じになってます。