![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сжатие БД MS Access [D7, MS Access]
Neo Trinitron © (2006-09-01 11:34:00)Простой вопрос для тех кто знает. В MS Access можно в настройках БД установить "сжимать базу при закрытии". И это прекрасно работает. Но будет ли это работать если я работаю с базой не через Access, а через ADO (OLE DB) в Delphi?
Neo Trinitron (2006-09-01 14:27:00) [1]palva, вах! Красивый пример, попробую.
palva (2006-09-01 14:09:00) [2]umbra © (01.09.06 13:12) [7]
procedure TForm1.Button2Click(Sender: TObject);
var
dao: OLEVariant;
begin
dao := CreateOleObject('DAO.DBEngine.36');
dao.CompactDatabase('D:\C\MDB\em.mdb', 'D:\C\MDB\em1.mdb');
dao := Unassigned;
end;
и в uses прописать unit ComObj
Neo Trinitron (2006-09-01 14:04:00) [3]sniknik, спасибо за пример. Но что представляет из себя "JRO.JetEngine"? Это COM объект? Если да, то как к нему приконектиться в дельфе?
sniknik (2006-09-01 13:33:00) [4]у джет в jro одноименный метод CompactDatabase, dao лучше не использовать, устарел.
пример из хелпа (бейсик)
Public Sub CompactAndEncrypt()
Dim je As New JRO.JetEngine
' Make sure that a file doesn't exist with the name of
' the compacted database.
If Dir("C:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind2.mdb") "" Then Kill _
"C:\Program Files\Microsoft Office\Office\Samples\Northwind2.mdb"
' Compacts and encrypts version Northwind database.
je.CompactDatabase _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind2.mdb;" & _
"Jet OLEDB:Encrypt Database=True"
End Sub
palva (2006-09-01 13:12:00) [5]> а если MS Access на машине не стоит?
DAO может сжать.
umbra (2006-09-01 13:12:00) [6]
> Ms jet для mdb не имеет в своём арсенале такой функции?
имеет, скорее всего. Если использовать ДАО, то там у объектаDBEngineесть методCompactDatabase, который выполняет сжатие. Как им воспользоваться не из ДАО, я не знаю
Neo Trinitron (2006-09-01 12:47:00) [7]umbra, а если MS Access на машине не стоит? Да ещё есть желание записать в лог корректно ли выполнено сжатие/восстановление? Это что процедура MS Access? Ms jet для mdb не имеет в своём арсенале такой функции?
umbra (2006-09-01 12:44:00) [8]msaccess.exe /compact "c:\db1.mdb"
Neo Trinitron (2006-09-01 11:51:00) [9]А как можно сжать из своей программы? И это же как никак настройка базы данных, а не Access... Надеялся что этим занимается движок jet :(
sniknik (2006-09-01 11:39:00) [10]сделай себе такую же настройку и выполняй сжатие при закрытии своей программы... если так уж нужно.
sniknik (2006-09-01 11:37:00) [11]нет конечно, настройки в любой программе действуют только внутри этой программы. а используемый движок "через ADO" (jet) это вовсе не Access.