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

Вниз

Access   Найти похожие ветки 

 
lamer_y   (2006-05-22 01:12) [0]

Подскажите как правильно сжимать Access 2003?


 
piople ©   (2006-05-22 06:47) [1]


> { **** UBPFD *********** by delphibase.endimus.com ****
> >> Программное сжатие базы данных Access используя JRO (Jet
> Replication Objects)
>
> Процедура позволяет сжать базу данных в формате Access,
> используя JRO (Jet Replication Objects). Действие аналогичное
> пункту меню в Access "Сервис -> Служебные программы ->
> Сжать и восстановить базу данных".
> Параметры:
> * DatabaseName - путь к исходной (не сжатой) базе данных
> * DestDatabaseName - путь к сжатой базе данных
> (по умолчанию пустой - в этом случае исходная база заменяется
> сжатой)
> * Password - пароль базы данных (по умолчанию пустой)
>
> PS. этот код был написан в связи с тем что аналогичная процедура
> через DAO у многих не работала (по пока неизвестным для
> меня причинам)
>
> Зависимости: windows,SysUtils,ComObj,Dialogs (Dialogs можно
> исключить
> используя MessageBox для вывода сообщения исключительной
> ситуации)
> Автор:       savva, [email protected], ICQ:126578975, Орел
> Copyright:   Сапронов Алексей (Savva)
> Дата:        9 сентября 2002 г.
> ***************************************************** }


procedure CompactDatabase_JRO(DatabaseName: string; DestDatabaseName: string =
 ""; Password: string = "");
const
 Provider = "Provider=Microsoft.Jet.OLEDB.4.0;";
var
 TempName: array[0..MAX_PATH] of Char; // имя временного файла
 TempPath: string; // путь до него
 Name: string;
 Src, Dest: WideString;
 V: Variant;
begin
 try
   Src := Provider + "Data Source=" + DatabaseName;
   if DestDatabaseName <> "" then
     Name := DestDatabaseName
   else
   begin
     // выходная база не указана - используем временный файл
     // получаем путь для временного файла
     TempPath := ExtractFilePath(DatabaseName);
     if TempPath = "" then
       TempPath := GetCurrentDir;
     //получаем имя временного файла
     GetTempFileName(PChar(TempPath), "mdb", 0, TempName);
     Name := StrPas(TempName);
   end;
   DeleteFile(PChar(Name)); // этого файла не должно существовать :))
   Dest := Provider + "Data Source=" + Name;
   if Password <> "" then
   begin
     Src := Src + ";Jet OLEDB:Database Password=" + Password;
     Dest := Dest + ";Jet OLEDB:Database Password=" + Password;
   end;

   V := CreateOleObject("jro.JetEngine");
   try
     V.CompactDatabase(Src, Dest); // сжимаем
   finally
     V := 0;
   end;
   if DestDatabaseName = "" then
   begin // т.к. выходная база не указана
     DeleteFile(PChar(DatabaseName)); //то удаляем не упакованную базу
     RenameFile(Name, DatabaseName); // и переименовываем упакованную базу
   end;
 except
   // выдаем сообщение об исключительной ситуации
   on E: Exception do
     ShowMessage(e.message);
 end;
end;
Пример использования:

...
db.Close;
CompactDatabase_JRO("c:\database.mdb",
 "c:\Archiv\database_pack.mdb", "password");
db.open;
...



Страницы: 1 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
15-1151058784
Tab
2006-06-23 14:33
2006.07.23
компонент загружающий .mht файлы из потока


9-1132093005
XCoder
2005-11-16 01:16
2006.07.23
Стоит ли учить DirectX?


15-1151040395
Александр Иванов
2006-06-23 09:26
2006.07.23
Помогите найти доводы для начальства


15-1150942348
TUser
2006-06-22 06:12
2006.07.23
Верховный суд трактует законы под диктовку МВД


2-1152031679
Yegorchic
2006-07-04 20:47
2006.07.23
ListView.Canvas