
No.3ベストアンサー
- 回答日時:
すでに回答が出ているとおり、Access97は終了時に最適化を行ってくれません。
私が業務で開発するMDBは以下のようにして実現しています。
A.mdb ---- いわゆる普通のDB
B.mdb ---- 最適化ユーティリティMDB
これらを同じフォルダに入れておく。
A.mdb内に作ったメニューフォームの[終了]ボタンを押すとB.mdbが起動した後A.mdbが終了。
B.mdbは同じフォルダ内にあるA.mdbを最適化する。
--------
1. A.mdbの[終了]ボタン クリックイベント
2. CurrentDB.Name でA.mdbのフルパスを取得
例: strFullPath = CurrentDb.Name
3. (2)のフルパスからファイル名を取り除いたパスを取得
4. SysCmd(acSysCmdAccessDir) でAccess.exeのパスを取得
5. (4)Access.exeのパスと(3)のパスと「B.mdb」を連結してShell関数にてB.mdbを起動する。
例:RetVal = Shell(strAccPath & "MsAccess.exe " & myParentPath & "B.mdb", vbMinimizedNoFocus)
6. A.mdbを終了。「DoCmd.Quit acQuitSaveNone」
--------
B.mdbの標準モジュールにPublic Subプロシージャを作成し、以下の処理を書く。
--------
1. 念のためForステートメントで空ループして時間を稼ぐ。
例:
For i = 1 To 5000
DoEvents
Next i
2. B.mdbのフルパスを取得。※A.mdbの(2)と同じ処理
3. (2)のフルパスからファイル名を除いたパスを取得。
4. Access.exeのフルパスを取得
5. 別名保存のための一時的なファイル名を作成する。
6. データベースを圧縮する。
例:
DBEngine.CompactDatabase myParentPath & "A.mdb", myParentPath & myTmpFileName, dbLangJapanese
7. A.mdbを削除する。
例: Kill myParentPath & "A.mdb"
8. 圧縮後のMDBをA.mdbにリネームする。
例: Name myParentPath & myTmpFile As myParentPath & "A.mdb"
9. B.mdbを閉じる
--------
なお、B.mdbで「マクロ」を作成し、アクション「プロシージャの実行」で対象を先ほどのプロシージャにします。
このマクロの名前を「AutoExec」としてください。起動すると自動実行されます。
以上のようにするわけですが、PCのスペックによっては失敗する可能性もあります。(今のところそういった報告は受けてませんが)
No.2
- 回答日時:
Access97で最適化するにはVBからDAOを使って出来ますが開いているDBを最適化
する事は出来ません。
DBEngineオブジェクトのCompactDatabaseメソッドを使用します。
Private Sub Compact97MDB()
DBEngine.CompactDatabase "C:\Text\db1.mdb", _
"C:\Text\db01.mdb",_
dbLangJapanese,dbVersion30
End Sub
こんな感じで別名にして最適化出来ます。
終わる時にVBからDAOを使って最適化してそのmdbをUpdateすれば可能だと思いますよ。
No.1
- 回答日時:
Access2000以降は終了時に最適化する機能がついていますが、Access97にはありません。
初心者ということですから、何らかのツールをお使いになられた方がいいと思います。
ベクターのWindows95/98/Me> ビジネス> データベース> MS-Access用>
にこんなものがありました。
これでVBAからコールすることで最適化ができるようです。
(内容について保証する訳ではありません)
参考URL:http://www.vector.co.jp/soft/win95/business/se10 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのmdb分析(解析)方法ま...
-
accessのmdbが勝手にできている?
-
ほかのユーザーが同じデータに...
-
Accessのmdbを開こうとしたとき...
-
ExcelのマクロでAccessのmdbを...
-
ACCESSのモジュールエラー?
-
他のPWがかかっているファイル...
-
AccessのDB破損に関して お教...
-
【Excel】[Expression.Error] ...
-
Accessで以下のシステムを1か...
-
特定のエクセルファイルを起動...
-
Access2003 デザインモードで...
-
.dbfファイルの急増
-
エクセルで縦のカラムデータを...
-
VBAでCSVファイルが使用中かど...
-
ThunderbirdのメールをCSVでま...
-
アクセスでcsvに出力した際、頭...
-
アクセスクエリ(複数)→マクロ...
-
タブ区切りデータからダブルコ...
-
月が変わったら自動でシートが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「○○○.ldb」のAccess レコード ...
-
Accessのmdbを開こうとしたとき...
-
accessのmdbが勝手にできている?
-
ACCESSのモジュールエラー?
-
ExcelのマクロでAccessのmdbを...
-
ファイルは開くのに「見つから...
-
アクセスをネットワークでリン...
-
Accessデータベースの最適化をE...
-
他のPWがかかっているファイル...
-
accessなしの人にも、accessのM...
-
Database.mdbと言うファイル
-
Accessで「誰々が使用中です」...
-
アクセスのファイルが壊れた!!!!!!
-
ほかのユーザーが同じデータに...
-
Access2003でVBAツールの参照設...
-
Access2010 ローカルドライブ...
-
Accessでリンクテーブルのパス変更
-
ACCESS mdbファイル 更新日時
-
office accessのmdbからエクセ...
-
Excelでmdbファイルが簡単に開...
おすすめ情報