[Visual Basic] MDB 압축
******************************************************************
** MDB 압축
******************************************************************
1. MDB 압축의 의미
- 트랜잭션이 발생한 후 MDB 내부에 임시 데이터가 삭제되지 않는데
압축을 통해 임시 데이터를 삭제하여 MDB의 용량도 줄이고 해서
더 잘 사용해 보자 하는 의미라는데?? ㅋ
- 암튼 데이터 삭제된 MDB를 압축하면 압축 전의 파일에 비해 용량이
줄어드는 것을 확인할 수 있다.
2. 예제
- VB에서 테스트 해본 예제 소스이므로 파일 경로만 맞춰주면 바로 실행 됨
- 참조에서 ADO를 추가하는 바람에 열라 고생했는데 제대로만 하면 바로
실행 가능하다.
Private Sub CompactMDB()
' 참조에서 Microsoft Jet and Replication Objects 2.1 library 추가 (반드시 2.1이상)
Dim v_jro As jro.JetEngine
Dim DBFile As String
Dim TempFile As String
Set v_jro = New jro.JetEngine
DBFile = App.Path & "\test.mdb"
TempFile = App.Path & "\temp.mdb"
' 이전의 임시화일이 존재하면 삭제
If Dir(TempFile) <> "" Then
Kill TempFile
End If
' DB 압축해서 임시화일에 생성(Password가 설정되지 않은 경우)
v_jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFile & ";Jet OLEDB:Database Password=", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TempFile & ";Jet OLEDB:Database Password="
'" 이전의 DB 삭제
If Dir(DBFile) <> "" Then Kill DBFile
'" 임시화일을 원래의 DB명으로 변경
Name TempFile As DBFile
Set v_jro = Nothing
End Sub
출처 : 데브피아 visual basic 강좌&팁 김형준(rabo) 님의 글