[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/08/08(Tue) 13:31
投稿者名:上村
Eメール:
URL :
タイトル:
Accessの最適化させるには?
こんにちわ。いつも拝見している上村と申します。
今回、VBを使ってAccessにデータ保存させるシステムを作成したところ、
ファイルサイズが莫大に増えてしまいました。
Accessのファイルを開いて、該当のテーブルを選択した状態でデータベースの最適化/修復と
いう機能を使用するとファイルサイズがかなり小さくなります。
そこで、VBのシステム上に最適化処理を盛り込もうと考えているのですが、どうすれば
最適化出来るのでしょうか?
下記にプログラムの一部を記載しますので、どなたか分かる人がいたら、よきアドバイスの程
お願いします。

Option Explicit
'
Private Sub Command1_Click()
    Dim DB          As DAO.Database
    Dim rs          As DAO.Recordset
    Dim xlFileName As String
    Dim xlSheetName As String
    Dim MyData      As String
    dim hs As New ADODB.Recordset
    dim ks As New ADODB.Connection

    xlFileName = "D:\vb_6\sample\1.xls"
    xlSheetName = "記録書" & "$"

    Set DB = OpenDatabase(xlFileName, False, False, "Excel 8.0;HDR=YES;IMEX=1;")
    Set rs = DB.OpenRecordset(xlSheetName)
    ks.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\sample.mdb"
    hs.Open "結果", ks, adOpenKeyset, adLockBatchOptimistic
    
    Do Until rs.EOF
        With rs
             :
            hs.UpdateBatch
            .MoveNext
             :
        End With
    Loop
    rs.Close
    hs.Close
    DB.Close
    Set rs = Nothing
    Set DB = Nothing
    Set hs = Nothing
End sub

投稿時間:2006/08/08(Tue) 16:00
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: Accessの最適化させるには?
最適化するにはCompactDatabaseメソッドを使います。

DAO で Access97 形式のファイルを最適化する
http://homepage2.nifty.com/inform/vbdb/dao_compactdb.htm

JRO で Access2000 形式のファイルを最適化する
http://homepage2.nifty.com/inform/vbdb/jro_compactdb.htm

投稿時間:2006/08/08(Tue) 16:33
投稿者名:上村
Eメール:
URL :
タイトル:
更に質問です。。。
LESIAさん、早速のアドバイスありがとうございました。
考える前に、サンプルを元に実行してみたのですが、疑問な点が出てきました。
疑問点とは、最適化するには、最適化前のmdbファイルと最適化後のmdbファイルは
名前を変更しなければならないのでしょうか?出来れば、最適化前のmdbファイルのままで
最適化処理を行いたいのですが、これは無理でしょうか?
それと遅くなりましたが、OS:WindowsXP VB:6.0 Access:Access2003を使用しています。

もし、更なるアドバイスがあれば是非、教えて頂きたい。
自分でも調べられる限りは調べてみますので、どうか、よろしくお願い致します。

投稿時間:2006/08/08(Tue) 16:50
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: 更に質問です。。。
> LESIAさん、早速のアドバイスありがとうございました。
> 考える前に、サンプルを元に実行してみたのですが、疑問な点が出てきました。
> 疑問点とは、最適化するには、最適化前のmdbファイルと最適化後のmdbファイルは
> 名前を変更しなければならないのでしょうか?出来れば、最適化前のmdbファイルのままで
> 最適化処理を行いたいのですが、これは無理でしょうか?

最適化した後に、最適化前のファイルを削除して、最適化後のファイル名を最適化前のファイル名に
変更すればいいです。

実は、Accessで手動で最適化するときも、Access自身もこれと同じことをやってたりします。

投稿時間:2006/08/08(Tue) 17:05
投稿者名:上村
Eメール:
URL :
タイトル:
了解しましたが、DAOでは無理でしょうか?
LESIAさん、回答ありがとうございました。

 最適化後に最適化前のファイルを削除して、filecopy等で変更して処理してみます。
 こんな質問をすると怒られるかもしれませんが(勉強不足のため)、JROを使用せず
 DAOでAccess2003のファイルを最適化する方法はないのでしょうか?
 URLを見たのですが、今一、理解出来なかったもので・・・。
 もし、DAOでのやり方があるようでしたら、教えて頂きたい。
 すみませんが、よろしくお願いします。

投稿時間:2006/08/08(Tue) 17:23
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: 了解しましたが、DAOでは無理でしょうか?
ここを見ると、DAO3.6なら、引数optionsにdbVersion40を指定すれば、
Access2002ならできるみたいだけど、2003は無理かもしれませんね。
DAO自体がすでに古いのでしかたないのかも…。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B436187

ちなみに、他に最適化する方法としては、コマンドラインから、
/COMPACTオプションを付ければ最適化できます。

C:\MSOffice\MSACCESS.EXE C:\sample.mdb /COMPACT

あと、Access2003なら、オプションで「終了時に最適化する」というのが
あったはずなのでそれを使えばいいかも。

投稿時間:2006/08/08(Tue) 17:54
投稿者名:上村
Eメール:
URL :
タイトル:
色々とありがとうございました
LESIAさん、何度も回答ありがとうございました。

コマンドラインからの最適化処理もやってみようと思います。
何度も何度もありがとうございました。
皆さんのアドバイスのおかげで、またひとつ、楽しく理解することができました。
本当にありがとうございました。