Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

Сжатие БД 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1160987510
pkm
2006-10-16 12:31
2006.10.29
МЕМО поле


1-1158758605
DVM
2006-09-20 17:23
2006.10.29
Убрать символ &amp; при считывании Caption MenuItema?


15-1160038958
worldmen
2006-10-05 13:02
2006.10.29
Подобрать Switch.


15-1160045622
Гарри Поттер
2006-10-05 14:53
2006.10.29
Интересный опыт, кто-то объяснит?


15-1160039529
Курдль
2006-10-05 13:12
2006.10.29
Схема микрофильтра ADSL