Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизБаза растет как на дрожах! Найти похожие ветки
← →
O l e g © (2004-09-06 04:03) [0]Когда зайдешь в акцес и нажмешь сжать и восстановить уменьшается в три раза! Можно это делать программно из дельфи?
Я уже начинаю жалеть, что связался с MS Access! Help :-?
← →
YurikGL © (2004-09-06 07:21) [1]Посмотри http://delphi.about.com/library/weekly/aa091801a.htm
Яндекс рулит
← →
sniknik © (2004-09-06 08:46) [2]> Я уже начинаю жалеть, что связался с MS Access!
меняй на другую но там будет та же фигня (если у базы страничная организация). там весь смысл добавлять пространство страницами (даже если нехватает места записать 1 запись в 1 байт) чтобы после писать по готовому. за счет этого достигается большая скорость записи (не надо изменять размер файла на каждый твой чих (добавление позиции)).
← →
O l e g © (2004-09-07 01:58) [3]Менять придется долго! Не хочется как-то!
← →
Soft © (2004-09-07 22:32) [4]
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;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.048 c