Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

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, savva@nm.ru, 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
15-1151392880
Ega23
2006-06-27 11:21
2006.07.23
Посоветуйте ToolBar


15-1150800117
Megabyte
2006-06-20 14:41
2006.07.23
Преимущества/удобства использования Dll и BPL


4-1144643472
ponyol
2006-04-10 08:31
2006.07.23
Проблема с переключением языка в XP


1-1149678424
td
2006-06-07 15:07
2006.07.23
эмуляция нажатия клавиши


15-1150035977
parovoZZ
2006-06-11 18:26
2006.07.23
Скрыть от трассировки юниты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский