Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизСжатие БД MS Access Найти похожие ветки
← →
Neo Trinitron © (2006-09-01 11:34) [0]Простой вопрос для тех кто знает. В MS Access можно в настройках БД установить "сжимать базу при закрытии". И это прекрасно работает. Но будет ли это работать если я работаю с базой не через Access, а через ADO (OLE DB) в Delphi?
← →
sniknik © (2006-09-01 11:37) [1]нет конечно, настройки в любой программе действуют только внутри этой программы. а используемый движок "через ADO" (jet) это вовсе не Access.
← →
sniknik © (2006-09-01 11:39) [2]сделай себе такую же настройку и выполняй сжатие при закрытии своей программы... если так уж нужно.
← →
Neo Trinitron © (2006-09-01 11:51) [3]А как можно сжать из своей программы? И это же как никак настройка базы данных, а не Access... Надеялся что этим занимается движок jet :(
← →
umbra © (2006-09-01 12:44) [4]msaccess.exe /compact "c:\db1.mdb"
← →
Neo Trinitron © (2006-09-01 12:47) [5]umbra, а если MS Access на машине не стоит? Да ещё есть желание записать в лог корректно ли выполнено сжатие/восстановление? Это что процедура MS Access? Ms jet для mdb не имеет в своём арсенале такой функции?
← →
palva © (2006-09-01 13:12) [6]> а если MS Access на машине не стоит?
DAO может сжать.
← →
umbra © (2006-09-01 13:12) [7]
> Ms jet для mdb не имеет в своём арсенале такой функции?
имеет, скорее всего. Если использовать ДАО, то там у объектаDBEngine
есть методCompactDatabase
, который выполняет сжатие. Как им воспользоваться не из ДАО, я не знаю
← →
sniknik © (2006-09-01 13:33) [8]у джет в 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
← →
Neo Trinitron © (2006-09-01 14:04) [9]sniknik, спасибо за пример. Но что представляет из себя "JRO.JetEngine"? Это COM объект? Если да, то как к нему приконектиться в дельфе?
← →
palva © (2006-09-01 14:09) [10]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:27) [11]palva, вах! Красивый пример, попробую.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.115 c