![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
先日、Accessにてリンクテーブルの削除、dbの最適化、リンクの張りなおしについて質問させていただいたものです。
結局、リンクテーブルを削除しなくても最適化ができましたので、とりあえずOKなのですが、最適化後のdb のサイズについて質問があります。
最適化の方法としては、メニューにあるボタンを押したら、
1.元データ(a.mdbとします)のバックアップ(bk.mdbとします)を取る(filecopyで行っています)
2.a.mdbの最適化を行います(最適化してできたdb をwk.mdbとします)。
3.wk.mdbをa.mdb元データの名前でコピーします。
4.wk.mdbを削除します。
実験のために、元のa.mdbのサイズを大きくして、上記の処理を行ってみたのですが、dbのサイズがほんのちょっとしか小さくなっていません。何回やっても同じです。
しかし、直接a.mdbを開いて、ツール→データベースユーティリティ→最適化 を行うと、びっくりするほどサイズが小さくなるのです。
これでは、最適化をメニューにつける意味がありません。しかし、ユーザーがa.mdbを直接開くことは避けたいので、解決策をご存知の方がいましたら、回答よろしくお願いします。
ちなみに、データ用のDTとそれ以外のプログラムのDTは分けています。Access2000、ADOで使用したいです。
No.2ベストアンサー
- 回答日時:
今、過去質問を見てきたのですが、
最適化しようとしているのはデータ.mdbの方ですよね。とすると、テーブルリンクしているだけのこのmdbのオブジェクトが肥大するということはないんじゃないでしょうか?
実施されたテストでは、何らかの方法でmdbのファイルサイズを大きくされたようですが、その過程でゴミが溜まり、その分がオブジェクトの最適化できれいになったという現象ではないでしょうか。
>データベースとオブジェクトを最適化するコマンド
・・・につきましては、他のmdbに対しての方法はないと思います。
というわけで、処理としてはこのままでよいと思います。ユーザに配布する前にメニューから「最適化」を実行し、運用中はVBAからCompactDatabaseを終了時に実行ということでよいのではないでしょうか。
なお、蛇足ながら
>3.wk.mdbをa.mdb元データの名前でコピーします。
>4.wk.mdbを削除します。
・・・という処理は、良くある最適化の手順では
>3.a.mdb を削除
>4.wk.mdb を a.mdb にリネーム
という手順をとることが多いようですよ。
こんにちは。わざわざ以前の質問を見てくださったのですね。ありがとうございます。
書き方が悪くて失礼しました。私の質問の中であげているa.mdbというのは、テーブルのみが入っているdbのことで、プログラムを格納しているdbを肥大化させたということではありません。オブジェクトを最適化するコマンドはないのですね。わかりました。
それと、最適化の手順を書いていただきましたが、こちらのやり方のほうがメリットがあるのでしょうか?(データベースが壊れにくい、とか)質問攻めですみません。
No.3
- 回答日時:
>こちらのやり方のほうがメリットがある
いやぁ、余計なこと書いちゃいましたかね~。
多分どっちでもいいんでしょうけどね。
(だったら言うな!(笑))
私自身が、その他の処理でも[削除]→[リネーム]のやり方を良く使うのと、ちょっと参考に覗いたいくつかのサイトでの最適化処理でも全てがこっちのやり方だったので・・・
ちなみに本職プログラマーの方が[コピー]→[ワーク削除]としている例もありました。
厳密言えば [削除]→[リネーム] の方が処理が早そうな気もしますが・・・。
こんにちは。何回も回答してくださって、ありがとうございます。今回は、あまり工数をかけられないので、今のままで良しとします。どうもありがとうございました。
No.1
- 回答日時:
「最適化」というのが、VBAから CompactDatabase を実行ということでしたら、これはメニューの「最適化」とは別の動作です。
メニューの「最適化」→ データベースとオブジェクトを最適化
CompactDatabase → データベースだけを最適化
当然、結果としてのファイルサイズも異なることになります。
こんにちは。早速の回答ありがとうございます。CompactDatabaseがデータベースのみ最適化するなんて知りませんでした。あつかましいですが、メニューの最適化同様、データベースとオブジェクトを最適化するコマンドをご存知でしたら教えていただけないでしょうか?(オブジェクトのみでも、CompactDatabaseとあわせてやれば問題ないですよね?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのマクロでAccessのmdbを...
-
Accessデータベースの最適化をE...
-
accessのmdbが勝手にできている?
-
ACCESSのモジュールエラー?
-
Access2003でVBAツールの参照設...
-
Excelでmdbファイルが簡単に開...
-
アクセスをネットワークでリン...
-
accessなしの人にも、accessのM...
-
アクセスのレポートが開かない
-
AccessのDB破損に関して お教...
-
インポート禁止にするには?
-
Accessでリンクテーブルのパス変更
-
Database.mdbと言うファイル
-
Accessで「誰々が使用中です」...
-
「○○○.ldb」のAccess レコード ...
-
Access2000 で読み取り専用の...
-
アクセスのファイルが壊れた!!!!!!
-
相対パスで別MDBファイルを開き...
-
【Excel】[Expression.Error] ...
-
Batch: フォルダ内の特定のファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「○○○.ldb」のAccess レコード ...
-
ACCESSのモジュールエラー?
-
Accessデータベースの最適化をE...
-
Accessで「誰々が使用中です」...
-
ExcelのマクロでAccessのmdbを...
-
accessのmdbが勝手にできている?
-
Accessのmdbを開こうとしたとき...
-
Excelでmdbファイルが簡単に開...
-
アクセスをネットワークでリン...
-
ファイルは開くのに「見つから...
-
Access2003でVBAツールの参照設...
-
アクセスのファイルが壊れた!!!!!!
-
Accessでリンクテーブルのパス変更
-
accessなしの人にも、accessのM...
-
Database.mdbと言うファイル
-
ACCESS mdbファイル 更新日時
-
Accessのmdb分析(解析)方法ま...
-
ACCESS 複数のmdbでModuleを共...
-
アクセスでレポート作成時のエ...
-
ACCESS2003 ファイルが増えてい...
おすすめ情報