Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизСжатие бд в Access Найти похожие ветки
← →
zergey (2003-09-30 18:44) [0]Вопрос несколько месяцев назад поднимался на форуме, но найти ту ветку я что-то не смог. Может напомните: как программно сжать базу данных *.mdb.
Заранее спасибо
← →
Е-Моё имя (2003-10-01 09:09) [1]V:=CreateOleObject("jro.JetEngine")
V.CompactDatabase(Src,Dest)
← →
zergey (2003-10-01 20:33) [2]>2Е-Моё имя
Пишу как в хелпе по Аксесу:
v.CompactDatabase
("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:\1.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:\2.mdb")
А получается ошибка: "Невозможно найти устанавливаемый ISAM"
Не подскажешь, в чем может быть дело?
← →
kraabs (2003-10-02 01:24) [3]Недавно у самого стояла такая задачка.
Завтра обязательно скину исходничек, т.к. он у меня на работе Пока.
← →
Snake (2003-10-02 06:19) [4]Наслаждайся ;)
Procedure CompactDatabase(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;
Application.MessageBox("Сжатие базы банных успешно завершено","",
MB_ICONINFORMATION+MB_OK+MB_APPLMODAL);
except
// выдаем сообщение об исключительной ситуации
on E: Exception do begin StopWait; ShowMessage(e.message); end;
end;
end;
← →
Е-Моё имя (2003-10-02 07:40) [5]танкисты на форуме по базам? оригинально...
> "Невозможно найти устанавливаемый ISAM"
поищи в яндексе, найдешь решение
← →
savva (2003-10-02 09:43) [6]> Snake (02.10.03 06:19) [4]
можно было и просто ссылку дать
http://delphibase.endimus.com/?action=viewfunc&topic=baseaccess&id=10165
http://delphibase.endimus.com/?action=viewfunc&topic=baseaccess&id=10303
← →
zergey (2003-10-02 18:19) [7]Всем спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c