Sub mycompact()
Dim dbe As New DBEngine
With dbe
.CompactDatabase "c:\1.mdb", "c:\2.mdb"
End With
End Sub
RayShade писал(а):
- Код: Выделить всё
Sub mycompact()
Dim dbe As New DBEngine
With dbe
.CompactDatabase "c:\1.mdb", "c:\2.mdb"
End With
End Sub
Учти, что сжимаемая база не должна в этот момент никем быть открыта.
GSerg писал(а):Файл mdb имеет кластерную сруктуру на манер таковой у винчестера. Соответственно, он подвержен "внутренней фрагментации", когда остаются пустые "кластеры". Сжатие ("дефрагментация") позволяет похерить все пустые "кластеры" и записать базу компактно.
GSerg писал(а):Файл mdb имеет кластерную сруктуру на манер таковой у винчестера. Соответственно, он подвержен "внутренней фрагментации", когда остаются пустые "кластеры". Сжатие ("дефрагментация") позволяет похерить все пустые "кластеры" и записать базу компактно.
Ivan1 писал(а):Извините что вмешиваюсь
но скажите в одном mdb у меня 5 таблиц
они будут накапливаться до кокого размера
может рости mdb
Может у кого нибуть есть какой нибуть
электроный справочник по DAO
может вышлите.
ASD писал(а):А вот такой вопрос. А реально ли как то без DAO сжать?
Если я юзаю ADO то както еще DAO для этого подключать накладно.
Например такие СУБД как MySQL умежт это делть через SQL запрос.
Luzin писал(а):я так и не нашел как из ADO сделать
потоэтому сделал через JRE (хотя через DAO было бы легче)
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc2.mdb;Jet OLEDB:Engine Type=4"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 251