Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.028 c
15-1160368764
nali
2006-10-09 08:39
2006.10.29
Не работает Delphi6


3-1157098001
Fostr
2006-09-01 12:06
2006.10.29
Проблема с обработкой запроса


2-1160994548
Alex_C
2006-10-16 14:29
2006.10.29
Как зная координаты каретки в Memo получить индекс ?


3-1157190189
Antoxa2005
2006-09-02 13:43
2006.10.29
Как правильно написать конфигуратор SQL запросов, с параметрами?


2-1160810610
Alex_86
2006-10-14 11:23
2006.10.29
Событие при разворачивании свернутого окна




   Наверх