Нашел вот такой код
- Код: Выделить всё
Dim srcString As String
Dim dstString As String
srcString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb"
dstString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db2.mdb;JET OLEDB:Engine Type=4"
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase srcString, dstString
Set jro = Nothing
Подключаю, как сказано, Microsoft Jet and Replicatuion Objects 2.5 Library, запускаю.
В итоге ошибка "Выполнение операции невозможно; возможности данной версии недоступны в БД старого формата"
Преобразую БД в формат Access 2000 или 2002 все равно выскакивает эта ошибка
Пробую сделать это на базе данных используемой в моей программе
В этом случае код такой
- Код: Выделить всё
Dim srcString As String
Dim dstString As String
srcString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Zbase.mdb;Persist Security Info=False;JET OLEDB:database password=1234"
dstString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Zbase.mdb;Persist Security Info=False;JET OLEDB:database password=1234;Engine Type=4"
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase srcString, dstString
Set jro = Nothing
Получается еще интересней "Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности проверьте значения всех состояний OLE DB. Работа не выполнена."
В связи с этим возникает ряд вопросов
1. Какой еще более новый формат Бд нужен этой хреновине


2. Как проверить значения всех состояний OLE DB.
3. Как все таки сжать БД(Access) программно
Заранее большое спасибо.