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

Вниз

Сегодня обнаружил такую вешь - в MS Access есть ...   Найти похожие ветки 

 
savva   (2002-04-23 18:06) [0]

..."служебная программа" для сжатия базы (то же мне открытие :)). Так она сжимает базу очень даже прилично... Исходная база (до этого никогда не сжималась) занимала по непонятным для меня причинам 50Мб (скорее всего этот объем составляли записи "помеченные для удаления", но опять же это только предположение:)) после сжатия стала занимать 1,5Мб (а упакованная архиватором так вообще 340 Кб).
Так суть вопроса для меня состоит в следующем: как и что эта "служебная программа" делает (опять же есть предположение, что происходит физическое удаление этих "помеченных к удалению" записей) и можно ли подобное провернуть программным путем?
Буду рад любым соображениям!


 
wicked   (2002-04-23 18:17) [1]

имхо он пакует не только записи "на удаление", но и пустые страницы... т. е. место в файле распределяется по страницам, они потом пустеют и занимают место...


 
savva   (2002-04-23 18:59) [2]

>wicked © (23.04.02 18:17)
тоже логично :))

интересно а можно подобное провернуть самому?


 
wicked   (2002-04-23 19:37) [3]

имхо нет... правда, ходили слухи, что dao эти штучки поддерживает...


 
aus   (2002-04-23 22:58) [4]

DAO поддерживает, ADOX поддерживает, правда нужно упаковывать в базу с другим именем, а потом позаботиться о замене файла на новый.
DAO := CreateObject("DAO.DBEngine.36");
DAO.CompactDatabase(.............)

Примерно так, хотя вполне может быть, что ошибся



 
DenNNis   (2002-04-24 08:09) [5]

компонент KADAO это делает без проблем одной строкой кода.
kadao.CompactAccessDatabase(ExtractFilePath(Application.ExeName) + "Data\Izmereniya.mdb","");


 
savva   (2002-04-24 16:46) [6]

всем ответившим спасибо, особенно aus © (23.04.02 22:58)
короче вот что я тут придумал (может кому пригодится:))
добавляем модули DAO2000б,ComObj в uses

Procedure TData.CompactAccessDatabase(DatabaseName,Password:String);
Var
TempName : Array[0..MAX_PATH] of Char;
TempPath : String;
Name : String;
tmpDAO : _DBEngine;
ClassID : TGUID;
V35, V36 : String;
Begin
V35:="DAO.DBEngine.35";
V36:="DAO.DBEngine.36";
try
try
ClassID := ProgIDToClassID(v35);
except
try
ClassID := ProgIDToClassID(v36);
except
raise;
end;
end;
TempPath:=ExtractFilePath(DatabaseName);
if TempPath="" Then TempPath:=GetCurrentDir;
GetTempFileName(PChar(TempPath),"mdb",0,TempName);
Name:=StrPas(TempName);
DeleteFile(PChar(Name));
if Password <> "" Then Password:=";pwd="+Password;
ADODB.Close;
tmpDAO := CreateComObject(ClassID) as _DBEngine;
tmpDAO.CompactDatabase(DatabaseName,Name,0,0,Password);
DeleteFile(PChar(DatabaseName));
RenameFile(Name,DatabaseName);
except
on E: Exception do ShowMessage(e.message);
end;
End;

procedure TData.actCompactDBExecute(Sender: TObject);
var
Save_Cursor:TCursor;
begin
Save_Cursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
CompactAccessDatabase(dbpath,"masterkey");
finally
Screen.Cursor := Save_Cursor;
end;
end;



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
1-64576
Елена
2002-05-07 13:32
2002.05.20
Фильтрация данных


3-64475
Aleksandr
2002-04-22 11:45
2002.05.20
Как установить таблице хитрый язык?


3-64484
Hamster
2002-04-21 08:28
2002.05.20
Максимальное кол-во user ов в IB....


1-64748
gera-killer
2002-05-07 12:24
2002.05.20
Помогите с Tmemo


1-64597
Ascan
2002-05-07 02:36
2002.05.20
Как запретить сообщения в TWebBrowser ?





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