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

Вниз

Сжать и восстановить БД   Найти похожие ветки 

 
VadimSpb   (2005-12-02 20:16) [0]

Добрый день!
Как из Д7 сжать и восстановить БД (Access)?
Т.е. сделать функцию, что аналогичную в Access с учетом пароля БД?


 
Savek   (2005-12-03 11:23) [1]

Сам не пробовал...

{**** UBPFD *********** by delphibase.endimus.ru ****
>> Программное сжатие базы данных 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;

function DatabaseCompact
 (const sdbName: WideString) : boolean;
var
JE          : TJetEngine; //Jet Engine
sdbTemp     : WideString; //TEMP database
sdbTempConn : WideString; //Connection string
const
SProvider = "Provider=Microsoft.Jet.OLEDB.4.0;
            Data Source=";
begin
Result:=False;
sdbTemp := ExtractFileDir(sdbName) +
           "TEMP" +
           ExtractFileName(sdbName);
sdbTempConn := SProvider + sdbtemp;
if FileExists(sdbTemp) then
   DeleteFile(sdbTemp);
JE:= TJetEngine.Create(Application);
try
 try
   JE.CompactDatabase(SProvider + sdbName, sdbTempConn);
   DeleteFile(sdbName);
   RenameFile(sdbTemp, sdbName);
 except
   on E:Exception do
          ShowMessage(E.Message);
 end;
finally
  JE.FreeOnRelease;
  Result:=True;
end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.042 c
1-1135935500
__oleg
2005-12-30 12:38
2006.02.05
Scrool в TStringGrid


2-1137446511
ReBlock
2006-01-17 00:21
2006.02.05
Печать из файла


15-1136987158
Lexer
2006-01-11 16:45
2006.02.05
Компьютер не вреден для здоровья


8-1125320969
qwe
2005-08-29 17:09
2006.02.05
Запись звука в wav


6-1130345013
cerber
2005-10-26 20:43
2006.02.05
Как програмно менять MTU