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

Вниз

Сервис->Служебные программы->Сжать и восстановить базу...   Найти похожие ветки 

 
Zif ©   (2004-11-06 00:21) [0]

Такой вопрос: Функция в Access Сервис->Служебные программы->Сжать и восстановить базу... За время прибывания на форуме я собрал несколько примеров, причем каждый раз предлагают новый вариант.
Какой из них лучше выбрать?

var JetEngine: olevariant;
begin
JetEngine:= CreateOleObject("JRO.JetEngine");
JetEngine.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+OldName+";",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ NewName +";");
JetEngine:=unassigned;
end;


или...
procedure TPreLoadFr.CompactDataBase(const FileName:string);
const ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
var
DBEngine:variant;
Dest:string;
begin
Dest:=ExtractFilePath(FileName)+"compact.mdb";
DeleteFile(Dest);
DBEngine:=CreateOLEObject("JRO.JetEngine");
DBEngine.CompactDatabase(ConnStr+FileName,ConnStr+Dest);
RenameFile(Source,PChar(Source+".old"));
RenameFile(Dest,Source);
end;


или...
uses
ComObj;

function CompactAndRepair(DB: string): Boolean; {DB = Path to Access Database}
var  
v: OLEvariant;
begin
Result := True;
try
  v := CreateOLEObject("JRO.JetEngine");
  try
    V.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DB,
                      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DB+"x;Jet OLEDB:Engine Type=5");
    DeleteFile(DB);
    RenameFile(DB+"x",DB);
  finally
    V := Unassigned;
  end;
except
  Result := False;
end;
end;


 
SergP ©   (2004-11-06 08:21) [1]

А разве они не одинаковые? Принцип то один...


 
sniknik ©   (2004-11-06 09:30) [2]

принцип один, но вариант лучше третий (хотя я бы и его чуть чуть изменил)


function CompactAndRepair(DB: string): Boolean; {DB = Path to Access Database}
var  
v: OLEvariant;
begin
 Result := false;
 v := CreateOLEObject("JRO.JetEngine");
 try
    try
       V.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DB,
                         "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DB+"x;Jet OLEDB:Engine Type=5");
       DeleteFile(DB);
       RenameFile(DB+"x",DB);
       Result := true;
    except
      on E: Exeption do DoIfError(E); {своя функция для обработки ошибки / показать сообщение / вести лог / хз. }
    end;
 finally
   V := Unassigned;
 end;
end;


привычнее так.


 
Zif ©   (2004-11-06 15:04) [3]

хотелось бы немного изменить данный пример:

uses
ComObj;

Button.Click
begin
 DataModule1.ADOConnection.Close;
 if(true = CompactAndRepair("Windows.mdb"))
 then
   MessageBox(Handle, "Ok", "Ok", MB_OK)
 else
   MessageBox(Handle, "Error", "Error", MB_OK);
 DataModule1.ADOConnection.Open;
end;

function CompactAndRepair(DB: string): Boolean;
var  
v: OLEvariant;
begin
Result := false;
v := CreateOLEObject("JRO.JetEngine");
try
 try
  V.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;User ID=мойлогин;Password=мойпароль;Data Source="+DB,
  "Provider=Microsoft.Jet.OLEDB.4.0;User ID=мойлогин;Password=мойпароль;Data Source="+DB+"x;Jet OLEDB:Engine Type=5");
   DeleteFile(DB);
   RenameFile(DB+"x",DB);
   Result := true;
 except
     on E: Exeption do DoIfError(E);
 end;
finally
  V := Unassigned;
end;
end;


Ошибки, которые выскакивали:
соответственно MessageBox Error
Exeption и DoIfError - неизвестные индитификаторы


 
sniknik ©   (2004-11-08 01:01) [4]

ну правильно, DoIfError как уже написал это своя функция по обработке ошибок (у меня логи там обычно пишутся имя модуля/класса ошибки/сама ошибка) ее тебе самому нужно писать

Exeption - ну ошибся, (прям сдесь правил) нужно Exception

MessageBox - не подключил модуль в котором описан (рядом с ComObj, пропиши Windows)



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

Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
1-1101114261
denis24
2004-11-22 12:04
2004.12.05
Несколько image в scrollbox


1-1101208770
denis24
2004-11-23 14:19
2004.12.05
удаление контрола


14-1100456731
ИМХО
2004-11-14 21:25
2004.12.05
Почему загнулся Netscape?


1-1100002576
Checist [root]
2004-11-09 15:16
2004.12.05
Событие скрола мыши


1-1100968084
lp
2004-11-20 19:28
2004.12.05
Grid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский