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

Вниз

Как удалить фотографию из Access   Найти похожие ветки 

 
delphoto   (2009-04-22 01:37) [0]

Написал БД в Delphi 7, использовал базы Access, одно из полей в таблице сделал типа "Поле объекта OLE", для хранения фотографии. Загрузил фотографию, всё работает отлично, теперь хочу её удалить, удалил также без проблем методом clear, но смотрю на размер файла базы данных Access, он не изменился, стал большого размера, фотография там всё ещё хранится, просто не отображается. Подскажите пожалуйста, как можно её оттуда удалить полностью?


 
Германн ©   (2009-04-22 01:42) [1]


> Как удалить фотографию из Access
>
> delphoto   (22.04.09 01:37)
>
> Написал БД в Delphi 7, использовал базы Access, одно из
> полей в таблице сделал типа "Поле объекта OLE", для хранения
> фотографии. Загрузил фотографию, всё работает отлично, теперь
> хочу её удалить, удалил также без проблем методом clear

Ну так чего же ещё тебе надобно старче?
(с) Золотая Рыбка.


 
delphoto   (2009-04-22 01:47) [2]

Удалено модератором


 
delphoto   (2009-04-22 01:47) [3]

Удалено модератором


 
delphoto   (2009-04-22 01:48) [4]


> Ну так чего же ещё тебе надобно старче?

фотография не удаляется фактически, она всё равно находится в самом файле базы данных Access, в результате чего размер базы данных резко возрастает, скажем если загрузить фотографию в 5Мб и затем удалить, то размер файла БД увеличится безвозвратно на 5Мб, как удалить эти 5Мб из самого файла БД?


 
sniknik ©   (2009-04-22 02:06) [5]

зря волнуешься, фотография удалилась, это место из под нее осталось. место будет использоваться в дальнейшем, потому и нет смысла на каждую операцию удаления пережимать базу.
все серьезные базы по такому принципу работают. без исключений. т.что ...

если хочешь сам делай сжатие (см. функции jro), но это не рекомендуемая для частого использования операция (а раз в полгода могут и акцессом сжать).


 
Amoeba ©   (2009-04-22 02:07) [6]


> как удалить эти 5Мб из самого файла БД?

Очень просто! Выполнив операцию сжатия базы Access.
Вот код из работающей программы:

uses ... , JRO_TLB;

const
 SProvider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";

procedure DataBaseCompact(const sdbName: WideString);
var
 sdbTemp: WideString;
 JE: TJetEngine;
 //Splash: TSplashWindow;
begin
 Splash := ShowSplashWindow(Application.Icon, Msg12, False,
   Application.MainForm);
 //sdbTemp := ExtractFileDir(sdbName) + "\TEMP" + ExtractFileName(sdbName);
 sdbTemp := ChangeFileExt(sdbName, ".tmp");
 if FileExists(sdbTemp) then
   DeleteFile(sdbTemp);
 JE := TJetEngine.Create(Application);
 try
   try
     JE.CompactDatabase(SProvider + sdbName, SProvider + sdbTemp);
     DeleteFile(sdbName);
     RenameFile(sdbTemp, sdbName);
   except
     on E: Exception do
       ShowMessage(E.Message);
   end;
 finally
   JE.FreeOnRelease;
   //Splash.Free;
 end;
end;


Чтобы получить в свое распоряжение файл JRO_TLB.pas необходимо будет  импортировать библиотеку типов.


 
delphoto   (2009-04-22 02:16) [7]


> место будет использоваться в дальнейшем

вот и проблема в том, что место в дальнейшем не используется, когда снова загружаю фотографию, то снова добавляется ещё 5Мб и база становится ещё массивнее, удаляю, снова загружаю и снова на 5Мб больше...
Использую MS Access 2003 SP2


 
delphoto   (2009-04-22 02:21) [8]

Может быть для удаления нужно использовать не clear, а другой метод?


 
delphoto   (2009-04-22 02:30) [9]

Попробовал сжать с помощью Access, размер файла уменьшился в 5 раз, с 10Мб до 2Мб, но без фотографии файл занимал 352Кб.


 
Германн ©   (2009-04-22 02:30) [10]


> Как удалить фотографию из Access
>
> delphoto   (22.04.09 01:37)  

Не надо "ёрзать". Всё и так нормально "удаляется"!
И работа с памятью ведется нормально.
Ну на то она и БД, чтобы грамотно работать с добавлением/удалением данных.


 
delphoto   (2009-04-22 02:35) [11]


> Ну на то она и БД, чтобы грамотно работать с добавлением/удалением
> данных.

а помоему такую базу данных можно назвать никак иначе, как мусорной, которая хранит в себе всякий хлам, который уже давно был удалён. И как я понял это не исправить, ошибка разработчиков Access, методы хранения данных нужно новые придумывать...


 
Германн ©   (2009-04-22 02:38) [12]


> delphoto   (22.04.09 02:35) [11]
>
>
> > Ну на то она и БД, чтобы грамотно работать с добавлением/удалением
> > данных.
>
> а помоему такую базу данных можно назвать никак иначе, как
> мусорной, которая хранит в себе всякий хлам, который уже
> давно был удалён. И как я понял это не исправить, ошибка
> разработчиков Access, методы хранения данных нужно новые
> придумывать...

Ну. ну :)
Дерзай, если сможешь!


 
Amoeba ©   (2009-04-22 02:41) [13]


> delphoto   (22.04.09 02:35) [11]
>
>
> > Ну на то она и БД, чтобы грамотно работать с добавлением/удалением
> > данных.
>
> а помоему такую базу данных можно назвать никак иначе, как
> мусорной, которая хранит в себе всякий хлам, который уже
> давно был удалён. И как я понял это не исправить, ошибка
> разработчиков Access, методы хранения данных нужно новые
> придумывать...

Не надо наводить тень на плетень. Ваша гневная тирада отдает ламерством. Все нормальные СУБД, а не только Access, работают именно так, как тебе не нравится. И это как раз правильно. А для удаления т.н. "хлама" предусмотрена операция сжатия.


 
Anatoly Podgoretsky ©   (2009-04-22 07:27) [14]

> delphoto  (22.04.2009 2:35:11)  [11]

Ну напиши баг репорт.


 
MonoLife ©   (2009-04-22 15:27) [15]


> delphoto   (22.04.09 02:35) [11]

имхо, если позволяет ТЗ, то лучше хранить изображения в виде файлов, а в базе - ссылки на них..


 
delphoto   (2009-04-22 17:07) [16]

MonoLife, спасибо за совет, так и сделаю



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

Форум: "Начинающим";
Текущий архив: 2009.06.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
15-1238708491
Kerk
2009-04-03 01:41
2009.06.07
Lazarus


2-1240333672
Дмитрий
2009-04-21 21:07
2009.06.07
Не работает программа.


15-1238616770
Артур Пирожков
2009-04-02 00:12
2009.06.07
Как вытащить звук из ютьбовского ролика?


15-1238693439
palva
2009-04-02 21:30
2009.06.07
Бесплатный хостинг fatal.ru возобновил регистрацию


15-1238654831
alexander
2009-04-02 10:47
2009.06.07
ASYNC pro





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