<Access2000ユーザーの方へ>
Access の不具合もしくは仕様と思われるもので注意が必要なこと
◆
重要
Access2002で,F11
→
ツール
→
データベースユーティリティ
→
MDE ファイルの作成
が,白抜き(つまり使えない状態)になります。
Access2002で,MDEファイルを作成するには,F11
→
ツール
→
データベースユーティリティ
→
データベースの変換
→
Access2002ファイル形式に変換
でAccess2002ファイル形式の .mdbファイルを作成する必要があります。名前は何でも構いません。
そうすると,F11
→
ツール
→
データベースユーティリティ
→
MDE ファイルの作成
が使えるようになります。
その場合でも,Microsoft Office 9.0 Object Library の参照設定が問題になる場合があります。Alt&F11
でVBEを起動後に
ツール
→
参照設定
で,参照設定ダイアログが開くので,その9.0のチェックを外して,Microsoft Office 10.0 Object Library に変更してください。
Windows 2000 Professional で使う場合もバージョンアップの仕方で問題が起きるようです。Microsoft Office 9.0
Object Library は,ファイルをサーチするのに使っているのですが,他にも方法があるので次からは変更することにします。
◆ Access2002(OfficeXP) で .mdeファイルを作成するには
Access2002で,F11 → ツール → データベースユーティリティ → MDE ファイルの作成 が,白抜き(つまり使えない状態)になります。
Access2002で,MDEファイルを作成するには,F11 → ツール → データベースユーティリティ → データベースの変換 → Access2002ファイル形式に変換 でAccess2002ファイル形式の .mdbファイルを作成する必要があります。名前は何でも構いません。
そうすると,F11 → ツール → データベースユーティリティ → MDE ファイルの作成 が使えるようになります。その場合でも,Microsoft Office 9.0 Object Library の参照設定が問題になる場合があります。
Alt&F11 でVBEを起動後に ツール → 参照設定 で,参照設定ダイアログが開くので,その9.0のチェックを外して,Microsoft Office 10.0 Object Library に変更してください。Windows 2000 Professional で使う場合もバージョンアップの仕方で問題が起きるようです。(2001.08.11)
◆ Access2002(OfficeXP) と Access2000 を同居させると,「つくれます Access2000版 が上手く動かない」 と報告が入っています。利用の際は,スタート(メニュー) → プログラム → ... で,Access2000 のみをまず起動させます。そして,ファイル(メニュー) → 開く から,.mdb/.mdeファイルを選択して開きます。なお,Access2002のみの場合は,今まで通り,そのままファイルをクリックして開いてもOKです。上手く動かない場合は,ご連絡ください。(2001.06.20)
◆ Race.mdbファイルが巨大化するのを防ぐには (2001.02.12)
レコードレベルロックをページレベルロックに戻すことで解決できることがあります。
※ 会社などでは,管理者に無断で変更しないようにしてください。
※ 生産者追加.mde ファイルを使用すると,初回起動時に自動的に変更します。会社などでは使用しないでください。
※ ver3.04.04以降のバージョンでは,自動的に初回起動時に変更されます。会社などでは使用しないでください。
◆ Race.mdbファイルが巨大化する (2001.02.08)
出馬表が入っている Race.mdb に,成績を入れるとデータが上書きされます。この時レコードロックをかけているのですが,その際に,1レコードに対して,データの大きさに関係なく,まず 4KB の大きさをAccess2000が確保します。そのため,成績を入れるのを繰り返すと知らない間にファイルが大きくなります。※Access2000の不具合なのか仕様なのかは不明です。
.mdbファイルの大きさは,2GByte まで
になっています。それ以上は,入らないか,もしくは,ファイルが壊れます。
これを避けるためにこまめに Race.mdb ファイルを最適化する必要があります。ひと月に一回は,Race.mdbを最適化してください。※15年分のデータでも,470MBほどに収まります。
<最適化の仕方>
最適化をしたい .mdbファイルを開く。(この場合 Race.mdb)
ツール → データベースユーティリティ → 最適化/修復
[注意] 最適化をかけるには,
windowsフォルダ(正しくは,Tempフォルダ)があるドライブの連続した空き容量が,最適化をかけるファイルより大きいこと
かつ
最適化をかけるファイルがあるドライブの連続した空き容量が,最適化をかけるファイルより大きいこと
が必要です。
※ 連続した空き容量とは,ドライブを最適化した直後の状態を指します。つまり,念のため,各ドライブを最適化(デフラグ)してから,.mdbファイルの最適化をすると確実です。
『JRA-VANデータパック完全版1986-1999』
CD-ROMから成績データを入れる時は,必ず半年(少なくとも一年)置きに最適化をかけて下さい。2,3年分まとめてデータを入れないようにしてください。※
ReadMe.txt,ReadMe34.txtファイルに入れ方が書いてあります。
◆ 5,6回コンパイルすると少し変更したぐらいではコンパイルできなくなる。 (2000.12.30,修正 2001.07.29)
コンパイルを繰り返すと,少し変更しただけでは,再コンパイルできなくなります。この状態で,MDEファイルを作成した場合,そのファイルは不完全なものになっており,一般保護エラーの嵐になることがあるので注意が必要です。
Access自体の不具合だと思われます。その場合,
変更したプロシージャが入っているモジュールの先頭の宣言セクション(モジュールの先頭部分)にカーソルを入れて,改行してみてください。そして,保存アイコンを押します。その後コンパイルできるようになります。
普通は,上のやり方でうまく行きます。もしくは,
変更した,モジュールやフォーム等の名前を変更して(例えば,組込み新 → 組込み新aa),一度ファイルを閉じます。その後に再び開き,それをコピーして貼り付けます。この時,元の名前で保存します。(上記の例なら組込み新) その後に,別名にしていたモジュール等(上記の例の場合 組込み新aa)を削除します。
なお,新規の空のデータベースファイルを作って,そこにインポートする方法もあります。パスワード設定解除後のファイルはインポート可能になっています。
◆ Access2000 のセキュリティについての注意事項 (2000.09.05)
以下の問題は,IE5.5を入れることによって解決できます。
ご存知のとおり,Access2000 VBA の機能は VB 並になっており,訪れたサイトによって勝手に実行されるのはとても危険です。 いったん .mdbファイルが自分のハードディスクにダウンロードされてしまうと,(「つくれます Access2000版」 のパスワード解除をされた方はわかると思いますが) 外部から簡単に操作可能になります。 よって, .mdbファイルは,インターネット上で,既定では,勝手にダウンロードされることはありません。 ところが,IE4.01以上のブラウザ(ふつうは,IE5,IE5.01)を使っている方は,悪意のあるサイトに行くと,知らないうちに Accessファイル(.mdb)を実行される恐れがあるので,注意してください。 これは,スクリプトに <OBJECT> が使ってあると,IEのセキュリティ機能が働かなくなるためです。 つまり,勝手に .mdbファイルがダウンロードされてしまいます。 怪しげなサイトには行かないように注意してください。
こちらのページの以下の個所です。英語の勉強?になります。日本語のサイトでもどこかにあるはずですが ...
The "IE Script" vulnerability. This vulnerability could allow script hosted on a malicious user's web site to reference a Microsoft Access file on the site. In turn, the Access file, when opened, could cause macro or VBA code to run.
(IEスクリプト の脆弱性。 この脆弱性は,悪意のあるウェブサイトのスクリプトが,そのサイトのマイクロソフトのAccessファイル(.mdb)を参照することを許してしまう恐れがあります(勝手にダウンロードされてしまうということ)。その後に今度は,そのアクセスファイルがいったん開かれるとマクロやVBAコードが実行される恐れがあります。) ※ in turn は,「交代」での意味でなく,「続いて今度は」 の意味
Affected Software Versions (影響を受けるソフトウェアのバージョン)
The IE Script vulnerability affects Internet Explorer 4.01 SP2 and higher, when Microsoft Access 97 or Access 2000 is present on the user machine.
(このIEスクリプトの脆弱性は,ユーザーのマシンにマイクロソフトAccess97 または Access2000 が存在している場合で,IE4.01 SP2インストール済み以上のバージョンで影響を及ぼします。)
◆ Access2000 での利用についての注意事項 (2000.05.19)
データベースウィンドウを開いた状態で,ツールメニュー → オプション で出てきたダイアログで,全般タブの 名前の自動修正 の項目が 名前の自動修正情報をトラックする 以下がすべてチェックが外れているか確認してください。 レコードソースが複雑なSQL文になっている場合,変更ができなくなったり,画面が固まったりします。 レポートでは,最適化時に,ページ設定が初期化されてしまいます。 名前の自動修正機能は使わないようにしてください。 マイクロソフト社からは,発表されていませんが,再現可能な現象なので,名前の自動修正機能に何らかの欠点があるようです。
サービスリリース (Office 2000 SR-1) で修正されています。(2000.06.09)
◆ Access2000 のテーブル仕様についての注意事項 (2000.09.18)
Access2000の .mdbファイルのテーブル仕様は,文字列のデータの保存に Unicode と呼ばれるものを採用しました。これは,すべての文字を2バイトで扱うもので,0123 ... のような数字も文字列の場合は,1バイトでなく2バイトとして扱われます。ヘルプに以下の記述があったのでそのまま信じて設定しいました。
"FieldSize/フィールドサイズ" プロパティ
設定値
"DataType/データ型" プロパティに [Text/テキスト型] が設定されている場合、0 ~ 255 までの数値をバイト単位で入力します。既定値は 50 です。
正しくは,文字数単位でになるようです。このため全角文字のデータを入れているフィールドで余分に設定していました。24とした場合は,48バイトも確保してしまいます。 (※他にもヘルプ文にAccess97からのものをそのまま流用してしまっている個所が見受けられるので要注意です。)
また,以下のヘルプを間に受けていました。
フィールドの "Unicode Compression/Unicode 圧縮" プロパティを [Yes/はい] に設定すると、多くの文字をサポートするユニコードを効率良く使用できます。テキスト、メモ、およびハイパーリンクでは、これが既定値です。"Unicode Compression/Unicode 圧縮" プロパティを [Yes/はい] に設定すると、最初のバイトが 0 であるすべての文字が圧縮して保存されます。圧縮された文字は、取得されるときに再び展開されます。英語、スペイン語、ドイツ語などの西欧諸国の言語で使用されるラテン文字は、最初のバイトが 0 になります。したがって、ユニコード方式になっても、ラテン文字だけで記述されたデータなら、圧縮すればほとんど容量が増加しません。
圧縮されるのならば,本賞金などのデータも文字のまま入れておいて良いだろうと考えていました。が,完全に圧縮するには,最適化(Race.mdbを開いて,ツール→データベースユーティリティ→最適化/修復) をかけないといけないようなのです。ver3.01のチェックのためにデータを入れていると,10年で1GByteも消費してしまいます。これに最適化をかけようとすると,12時間もかかってしまいました。このため,圧縮するフィールドの数を減らすために,本賞金などは,長整数型で保存しておいた方がいいことがわかりました。 (※ なお,最適化は,データのハードディスク上の並び替えも行っています。この場合は,RaceID順にハードディスク上にきれいに並べ替えます。)
つまり,Unicode を採用するようになった .mdbファイルでは,数字は数値として,各数値のデータ型(整数型や長整数型等)として保存する必要があり,文字列として保存するものは,本当に文字として保存する必要があるものにしないといけないことがわかりました。
しかし,やはり最適化しないとファイルがとんでもなく大きくなってしまうのは変わらないようです。
ということで,成績ファイルをまとめて入れるときは,Race.mdbファイルを一年ごとに最適化をして方が無難です。これに気がついたのが,Office 2000 SR-1 を入れてからなので,それを入れた人のみなのかもしれません。