|
>「テーブルA」
>レコード1
>レコード2
>レコード3
>レコード4
>レコード5
>レコード6
>
>と言う状態までレコードがテーブルAに書き込まれたあとに
>
>「テーブルA」
>レコード1
>レコード2
>レコード3
>レコード3−1 <----- レコードの挿入
>レコード4
>レコード5
>レコード6
>
>レコード3−1がレコード行の中に挿入されるといった具合です。
別におかしなことではないですね。
というのは、テーブルはレコードの順番という情報を持たないからです。
テーブルには、格納順という情報すら保有されないのです。
データベースでは、レコードの並べ替えということをしょっちゅう行います。
もしテーブルに並び順の情報を持っていると、
並べ替えのたびに並び順の情報を書き替えなければならなくなり、
並べ替えの処理を迅速に行えなくなるので、
わざと、テーブルに並び順の情報を持たないようにしているのです。
データベースウィンドウ(2003の場合)からテーブルを開くと、
レコードは一定の順序で並んでおり、
メニューのコマンドを使えば、それを並べ替えることもできます。
しかし、この並べ替えは、
テーブルのレコードそのものを並べ替えているのではないのです。
データベースウィンドウからテーブルを開くと、データシートで表示されますが、
プログラム的には、このデータシートはフォームなのだそうです。
メニューのコマンドから行う並べ替えは、
テーブルのレコードを並べ替えているのではなく、
フォームの並べ替えの機能を利用して、
並べ替えが行われているように見せているに過ぎないのです。
テーブルを開いてみると、レコードが意図したとおりに並んでいるのに、
そのテーブルを使ったクエリを作って、そのクエリを開いてみると、
レコードの並び順がめちゃくちゃになっていることがあります。
これも、テーブルが並び順という情報を持っていないがために起こります。
mdbファイルへは、テーブルの情報は、メモリ番地の順に格納されます。
テーブルへ新しいレコードを入力すると、
メモリへはメモリ番地順に情報が格納されます。
それゆえ、テーブルへは入力順に格納されることが多いです。
しかし、何らかの事情でメモリに空きがある場合、
新しく入力したデータは、その空いているメモリ番地に格納されてしまうことがあります。
こうなると、入力順とメモリ番地の順とに狂いが生じてしまいます。
こうしたことから、データベースでは、
もしレコードの並び順をきちんとしたいなら、
クエリにより並び順を指定してやらなければなりません。
以上のような理由から、
テーブルにおけるレコードの順番がおかしいということは、
何らおかしなことではありません。
|
|