<テーブルのフィールドを削除するには>

Kakoテーブルに,オリジナルな情報を入れるために新たなフィールドを追加するには少し解決しないといけない問題があります。 これは,以下にあるとおり,Accessテーブルのフィールド数の制限から来る問題です。

Access の 1 テーブルのフィールドの最大数は,255 です。(キリのいい 256 でないのは,Access自身が一つ使っているためと思われます。)

※コンピュータでは,2 を掛けていった数( 2 のべき乗)がキリのいい数なります。 2481632641282565121024,2048,4096,8192,16384,3276865536 ...

その 255 の内,Access2000版(ver2.02)の場合,Kakoテーブルは,その中の 9 + 45 * 5 = 234 フィールドをすでに使っています。

残り 21 フィールドが,新たに設定可能なフィールドになります。 よって,各前走に,ラップなどの情報を割り当て可能なフィールドは, 21 \ 5 = 4 フィールドになります。

右側の前走のフィールドを眺めてみると,調教師関連のフィールドは,たぶん利用しないので削除可能になります。 (前1競争条件名称 も,地方レース用で,あってもほぼ利用しないので削っても良いかもしれません。)

2 * 5 = 10 フィールドも空きができるので,予想関連に割り当てることが可能になります。

 

下図のように選択してから,Deleteキーを押すと削除できます。

フィールドを削除した場合,データの組込みのプログラムも変更する必要があります。

前1RaceID
前1開催日
前1競馬場名
前1レース名略称
前1競走種別コード
前1競走記号
前1重量種別
前1クラス表示
前1クラス数字
前1競走条件名称
前1距離
前1芝ダ別
前1コース
前1コース日目
前1補正
前1回り
前1登録頭数
前1出走頭数
前1入線頭数
前1馬場状態
前1天候
前1馬番
前1枠番
前1性別
前1斤量
前1ブリンカー
前1騎手コード
前1騎手名略称
前1見習区分コード
前1調教師コード
前1調教師名略称
前1異常表示
前1馬体重
前1増減差
前1コ3
前1コ4
前1上がり
前1自己タイム
前1タイム差
前1入線順位
前1確定着順
前1人気
前1単勝オッズ
前1相手馬コード
前1相手馬名

つくれます オリジナル情報

以下の問題は,Office 2000 SR-1 を入れると解決されます。(00.09.05 修正)

一般の参考書では,このように書いてあります。 が,実はこれだけでは完全には削除されません。 つまり,各前走削除しても 「 2 * 5 = 10 フィールドの空き」 はできません。これは,Access が常に拡張的にクラスを拡大していく構造になっていることと関係しています。

Access のテーブルのフィールドは,

Fields(0)    フィールドA

Fields(1)    フィールドB

Fields(2)    フィールドC

Fields(3)    フィールドD

Fields(4)    フィールドE

のように,新たにフィールドが追加されるごとに,配列のように Fieldsコレクション の中に追加されていきます。

例えば,フィールドC を削除しても,以下のように削除したフィールド Fields(2) が使用不可の状態になるだけです。

Fields(0)    フィールドA

Fields(1)    フィールドB

Fields(2)    フィールドC     使用不可 (非表示)

Fields(3)    フィールドD

Fields(4)    フィールドE

ここで新たにフィールドを追加しても,以下のように拡張的に最後に加えられます。

Fields(0)    フィールドA

Fields(1)    フィールドB

Fields(2)    フィールドC     使用不可 (非表示)

Fields(3)    フィールドD

Fields(4)    フィールドE

Fields(5)    フィールドF

これが何を意味するのかというと,表示されているフィールド数 実際使ってしまっているフィールド数 とに違いが出てくるということです。

検証するには,フィールド追加 → 保存 → フィールド削除 → 保存 を, 255 回繰り返すと,

というダイアログが現れて,1フィールドもない状態でもフィールドが追加できなくなります。

 

この状態は,以下に示すように,新たにテーブルを作り直すと,使用不可(フィールドC)のところが詰まり,空きフィールドができます。

Fields(0)    フィールドA

Fields(1)    フィールドB

Fields(2)    フィールドD

Fields(3)    フィールドE

Fields(4)    フィールドF

1.  右クリックをして,テーブル名を変更します。

2.  例えば,Kako_a のように別の名前にします。

3.  コピーアイコンをクリックして,コピーした後に,ペーストアイコンをクリックします。

4.  Kako という元の名前でテーブルを作成します。 データを入れなおしたくない場合は,テーブル構造とデータ を選びます。 なお,データが多いと時間がかかる場合やうまく行かない場合があります。 その時は諦めて,テーブル構造のみにしてやり直します。 そして,1日作業になってしまいますが,データを入れなおしてください。

5. 新しく Kako テーブル が出来上がります。 一度,デザインビューで開いてうまくコピーされているか確認します。 見た目にはわかりませんが,フィールドがきれいに詰まった状態になっています。

6. 右クリックして不要になったテーブルを削除します。

 

[おまけ]

実は,フィールドについて言えた事が,テーブルにも当てはまります。 つまり,テーブルを削除しても内部的には残っています。 とりあえずは問題ないので,また別の機会に回避方法を書きます。 フォームに追加したコントロールも同じ原理になっているので,追加や削除を繰り返すのは,具合が悪いと覚えておくといいかもしれせん。

なお,『 つくれます Access2000版 ver.2.02』 の方は,削除を一度もしていない状態で提供しています。