3.フィールド
Q. 教科書 P.52で、[ID]フィールドにコンボボックスより ID を入力すると、自動的に「ボンボンの名前」から「価格」まで値が入ります。投入した ID から、どんな方法で価格を検索しているのでしょうか?
|
A.
この部分は、詰め合わせフォームの「サブフォーム」になっています。
サブフォームの基になっているのは「詰合せサブフォーム」クエリーです。(サブフォームのプロパティ、レコードソースで確認できます)
このクエリーをデザインビューで開いて下さい。
ボンボンテーブルと詰め合わせ詳細テーブルが、「ボンボンID」で結ばれています。
従って、ボンボンIDを入力(ボンボンIDの値が確定)すると、自動的 に名前や価格が Relational に索引されてくるのです。
これが、Relational DB の特徴です。
別にプログラムやマクロを使わなくても、基本的な機能としてこのようなことができるのです。
面白い機能ですね。
A.
最近、主にメインフレームと呼ばれる大型汎用コンピュータのシステムで、2000年問題というのが話題になっています。
年月日を 96/09/01 などと記録している場合、2000年になると 00/01/01 などと記録しますと、並べ替え(sorting)を行なった時に、正しく並ばないという問題です。
パソコン/Access 97 の場合は、どうでしょうか?
普段私たちが 96/9/1 と投入すると、96/09/01 と表示されていますが、実はシステムの中では、1996/09/01 と記録しているのです。4桁で記録しているということですね。
ですから、2000年になると 2000/01/01 と記録され、問題はありません。
年月日フィールドに 1895/5/5(M28/5/5)と投入してみてください。ちゃんと 1895/05/05 と表示されますね。
もちろん 1995/5/5 (H7/5/5) と投入すると、95/05/05 です。ちゃんと区別がついています。
また、年月日のフィールドを yyyy/mm/dd と入力するようにした場合、データ型の選択は日付/時刻型でもテキスト型でも選択でき、両方とも入力できますが、年月日フィールドは、日付/時刻型にして下さい。
こうしておくと、おかしな日付を投入した時、自動的にチェックしてもらえます。
<教訓>
生年月日フィールドは、**/**/** の幅ではまずい。
****/**/** の幅を持たせなければ万全ではない。(明治生まれに失礼だ!)
Q. オートナンバーのフィールドが変です。レコードを追加していくと1、2、3と記入されましたが、レコードを全部削除したあとに、またレコードを追加すると「1」からではなく「4」から始まりました。削除した番号は使えないのですか?
|
A.
はい、そのようになって当たり前なのです。
オートナンバーは、通常の(手動入力による)数字とは違って、一度付与されたものは2度と使われることがありません。
それが、オートナンバーの意味するところです。
では、なぜオートナンバーというものがあるのでしょう?
それは、Accessのようなリレーショナル・データベースでは、あるレコードが他のレコードとは異なる「キー」を絶対に持たなくてはならないので、それを簡単に実現する手段として使っているのです。
たとえば、顧客マスターに関連して、売上げデータが別のテーブルにあるとします。顧客が契約を解除した時に、顧客マスターのその「番号」(が記録されたレコード)を削除したとします。
後日、新しく契約した別の顧客にその番号を付与しますと・・・・
結果として以前の顧客と、新しい顧客とが同じ番号を使うことになりますね。
顧客マスターのことだけを考えると、古い顧客は削除されているので問題ないのですが、売上げデータやそれに関連した請求・入金管理などのデータでは、同じ番号が複数あることになり大混乱が起こります。
つまり、連続番号に意味があるのではなく、同じ番号がないことに意味があるのです。
テーブルの定義画面で、オートナンバー型のフィールドプロパティが「新規レコードの値=インクリメント」となっていますが、右端をクリックして「ランダム」に指定することができます。
するとどんな現象が起こるかを、テストテーブルを作って一度試してみてください。
すっきりした、きれいな連続フィールドがほしいのであれば、オートナンバー型ではなく数値型で定義し、手入力か、プログラムで対応するようにしましょう。
Q. フィールドにオートナンバーを使う場合は、どんな時に使うのですか?
|
A.
世の中には、「絶対固有の番号」と「相対的な番号」の二つが存在します。
プロップで開発した高等学校の成績管理システムの例でいいますと、「学籍コード」は、個々の生徒に絶対固有のもので、入学から卒業まで(厳密には卒業後も)固有のものです。
転校生や退学者があっても決して「振り直し」はしません。
一方、年度ごとの「生徒番号」の方は、進級の状況やクラス替えに応じ、また転入生や転校・退学などで、毎年度振り直しています。
普段は、「生徒番号」で管理をしますが、システム的には「学籍コード」の方が大きい意味を持っています。
意味が分からない番号でも、決して重複していないということに大変な「意味がある」。
これが、オートナンバーの存在する理由です。
項目 INDEX に戻る
|