- ベストアンサー
Access終了時の最適化が失敗?
Accessで作成したシステムには必ずオプションで「終了時に最適化」を指定しています。最適化の時に一旦、MDBのファイル名がdb1.mdbとかに変わり、次に元のファイル名に戻るのが正常なパターンですが、たまにファイル名が戻らない場合があります。何か対策はありますでしょうか?宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私はACCESS2000を使用しています。 最適化するときは次のように注意しています。 (1)コードを閉じてから最適化する。 ===コードの閉じ方=== モジュールをデザインで開き、右上内側の閉じるボタンをクリックしてコードを閉じる。灰色の背景が見えるまで全て閉じる。(※1) コンパイルする。(コンパイルが通ったら)上書き保存する。AccessDBを閉じる。 最適化する。 Access2000になってからコードが開いた状態で最適化やフォームの削除、モジュールの削除をするとDBが壊れるということを経験しました。 (2)AccessDBは閉じてから最適化する。 Accessウインドウの中にAccessDBが開いている状態で最適化するとちゃんと最適化できないようです。 Accessウインドウだけが開いた状態から最適化します。 ※1) 開いているコードが多すぎて手作業で閉じるのは大変という事でしたら、 コードを閉じる関数を持っています。コメントにご連絡ください。
その他の回答 (2)
Microsoftのサポートには既知の問題として 認識はしているものの有効な対処はされていないようです。 http://support.microsoft.com/kb/842580/ja となるとAccessのオプション(終了時に最適化)だけでなく ツールバーからの行うか、マクロのAutoExecに最適化を 登録して起動時に行うか、 マクロでCompactDatabaseメッソドを使用して 適当なタイミングに実行するとか。 最適化を行ってから終了するようにするとか。 http://www.accessclub.jp/samplefile/samplefile_220.htm
お礼
nekon様、ご回答いただきありがとうございます。 DAOのCompactDatabaseメソッド、私もやったことがあります。わざわざそれ用のVBのEXEを作ってAPI等駆使してとか、いろいろと。97の頃からやっているので、2000で終了時オプションとして出たときは「これは使わない手はないだろう」と思ったんですけどねぇ。ちょっとSEと相談して決めようと思います。ありがとうございました。
- O_cyan
- ベストアンサー率59% (745/1260)
>たまにファイル名が戻らない場合があります 最適化時に作成されるワークファイルのdb1が残ってしまうのは最適化の際に空き容量が不足した状態になった時など残ってしまいますが・・。 その辺はどうでしょうか。空き容量が不足しているとかメモリ不足の状態になっているとか。
お礼
O_cyan様、ご回答ありがとうございます。 また、お返事が遅れて申し訳ございません。 ディスク・メモリの容量不足は全く問題はないようです。ただ、該当MDBを直接ダブルクリックして開き、閉じる場合、失敗する場合が多いようです。db1.mdb→元のMDBに戻るときの、フォルダ画面再描画が原因かなぁ?となんとなく感じています。ショートカットからの起動だと、今のところ失敗していません。
お礼
KAERU_VXV様、ご回答いただきありがとうございました。 フォームやレポート等のオブジェクトを全て閉じて、最適化するという手法、私も経験があります。SendKeysステートメントを使ったりとかね。あれは無茶だと今では思いますが、そのシステム自体ではちゃんと動いてました。懐かしい。 今回、CSVを1つのワークテーブルに読み込んで、Excelオブジェクトを生成するという簡単なシステムなので、それゆえ、ユーザーに「最適化ボタンというのがあるのでこれを実行してください。でないと壊れます!」と言いたくないという思いがありまして。だったら、終了時に無意識のうちにやってくれればユーザーにとってもベストだと考えました。 とりあえず、SEと相談して、決めようと思います。仮に壊れてもデータはどうせワークデータなので、損失はないかと。ただ、MDBのファイル名が変わっちゃうだけなのでね。 それにしても皆さんも苦労されていますね。ちょっと面白かったです。ありがとうございました。