
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で質問しましょう!
似たような質問が見つかりました
- Windows 8 Window10の初期化をスムーズにする方法を教えてください。 4 2022/08/07 10:19
- Mac OS ミュージックのアートワークを自動取得させない方法について 1 2022/11/17 01:12
- ライフスタイル・ヘルスケア WIN10 スタートアップとバックグラウンドアプリについて教えてください 3 2022/05/15 16:49
- Excel(エクセル) Excelで図の書式設定を移動したい 1 2022/10/07 15:32
- Mac OS Macのミュージック上で、アルバムのアートワークを取得させない方法について 3 2022/12/07 02:16
- ノートパソコン パソコンが急に繋がらなくなった。 11 2023/02/01 00:49
- Excel(エクセル) Excelのウィンドウが少し小さく、ズレて立ち上がります 1 2022/06/27 16:25
- その他(プログラミング・Web制作) バッチファイル 1 2022/09/16 14:51
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「○○○.ldb」のAccess レコード ...
-
アクセスをネットワークでリン...
-
Database.mdbと言うファイル
-
ファイルは開くのに「見つから...
-
Accessのmdbを開こうとしたとき...
-
Accessデータベースの最適化をE...
-
accessのmdbが勝手にできている?
-
アクセスのファイルが壊れた!!!!!!
-
Excelでmdbファイルが簡単に開...
-
ACCESS mdbファイル 更新日時
-
ACCESS 複数のmdbでModuleを共...
-
Access2003でVBAツールの参照設...
-
accessなしの人にも、accessのM...
-
SQLPLUSで結果を画面に表示しない
-
秘書君2
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
社内Excel共有ブックでの保存ト...
-
事務の派遣で働いています。多...
-
ACCESS2000でマクロでCSVエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「○○○.ldb」のAccess レコード ...
-
Accessのmdbを開こうとしたとき...
-
accessのmdbが勝手にできている?
-
Accessデータベースの最適化をE...
-
ファイルは開くのに「見つから...
-
ACCESSのモジュールエラー?
-
アクセスをネットワークでリン...
-
Accessで「誰々が使用中です」...
-
Access2003でVBAツールの参照設...
-
accessなしの人にも、accessのM...
-
Accessでリンクテーブルのパス変更
-
ExcelのマクロでAccessのmdbを...
-
ACCESS mdbファイル 更新日時
-
Excelでmdbファイルが簡単に開...
-
ほかのユーザーが同じデータに...
-
Access97で自動で最適化するには…
-
Accessでmdbが開いているかのチ...
-
Database.mdbと言うファイル
-
Accessのmdb分析(解析)方法ま...
-
ACCESSで「ブックマーク...
おすすめ情報