Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сжатие БД 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо