MyTetra Share
Делитесь знаниями!
Сжатие mdb
12.10.2019
20:37
Текстовые метки: VBA_Access, Compress
Раздел: !Закладки - VBA - Access - Compress

Наконец-то решил вопрос.
Что бы программно очистить и сжать базу данных созданную в MO Access, необходимо:
1) В свойствах проекта, в разделе Ссылки, подключить COM библиотеку Microsoft Jet and Replication Objects 2.x Library
2) Используем код:


vb.netВыделить код

SqlCom = New OleDb.OleDbCommand("DELETE * FROM [nSST]", Con) 'SQL-запрос на очистку всех элементов из таблицы nSST базы подключеной в переменной Con

        Con.Open()

        SqlCom.ExecuteNonQuery() 'применяем запрос

        Con.Close()

        Dim je As New JRO.JetEngine

        'база sst.mdb сохраняется в сжатом виде в базу newsst.mdb

        je.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=sst.mdb", _

        "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=newsst.mdb")

        IO.File.Delete("sst.mdb")'удаляем несжатую базу

        Rename("newsst.mdb", "sst.mdb") 'меняем имя у сжатой базы

        je = Nothing

Проверялось на базе созданной в Access 2003 и Visual Studio 2010.



'=================================================

http://howtucode.com/compacting-database-430649.html


Private Sub Compactdb()


Dim JRO As JRO.JetEngine

JRO = New JRO.JetEngine


Dim source = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Fortedb.accdb"

Dim compact = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Compactdb.accdb"

JRO.CompactDatabase(source, compact)


'Original (not compacted database is deleted)

System.IO.File.Delete("C:\Forte\Fortedb.accdb")


'Compacted database is renamed to the original databas's name.

File.Move("C:\Forte\Compactdb.accdb", "C:\Forte\Fortedb.accdb")


'User notification

MsgBox("The database was compacted successfully")


End Sub


'==================================================================================================

http://www.sql.ru/forum/508800/podkluchit-biblioteku


Private Sub Workbook_Open()


ActiveWorkbook.VBProject.References.AddFromGuid _
"{AC3B8B4C-B6CA-11D1-9F31-00C04FC29D52}", 2, 6

Dim JRO As Object 'JetEngine пока не присоединена библиотека на сталии компиляции не известен

Set JRO = CreateObject("JRO.JetEngine")
Debug.Print TypeName(JRO)
'For i = 1 To ActiveWorkbook.VBProject.References.Count
' With ActiveWorkbook.VBProject.References.Item(i)
'  Debug.Print .Name, .GUID, .Major, .Minor
' End With
'Next
End Sub

'==================================================================================================

 
MyTetra Share v.0.52
Яндекс индекс цитирования