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

Вниз

Не сохраняются *.jpg в Access   Найти похожие ветки 

 
illuha   (2006-05-07 13:26) [0]

В таблице имеется поле с двоичными данными, в котором хранятся графические файлы, но в таблице сохраняется только *.bmp, другие форматы не сохраняются. Почему?
Файл базы получается очень большой, т. е после удаления записей из базы, размер не уменьшается (DataModule1.Table.Delete;).
С базами, только учусь если не сложно то по подробней.


 
sniknik ©   (2006-05-07 13:48) [1]

> другие форматы не сохраняются. Почему?
неправильно сохраняеш.

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

> С базами, только учусь если не сложно то по подробней.
книжку на заказ? для одного читателя? тираж оплатиш?


 
Desdechado ©   (2006-05-07 15:40) [2]

> после удаления записей из базы размер не уменьшается
Нет смысла. Просто этоместо помечается как свободное и занимается при последующих записях без увеличения размера БД. Это быстро, экономно и логично.


 
illuha   (2006-05-07 21:45) [3]


> неправильно сохраняеш

Вот я и спрашиваю как правильно?
Может какую книгу посоветуешь для начали или где в сети почитать?


 
Desdechado ©   (2006-05-07 22:13) [4]

лучше покажи, как сохраняешь (код) и куда (структуру таблицы)


 
illuha   (2006-05-07 22:33) [5]


type
 TDataModule1 = class(TDataModule)
   DataSource1: TDataSource;
   ADOConnection1: TADOConnection;
   Table: TADOTable;
   TableN: TAutoIncField;
   TableTitle: TWideStringField;
   TableGanre: TWideStringField;
   TableYear: TWideStringField;
   TableManual: TMemoField;
   Tablecover: TBlobField;
   TableDate: TDateTimeField;
   TableBox: TIntegerField;
   XPManifest1: TXPManifest;



procedure TGetDataForm.SaveButtonClick(Sender: TObject);
begin
if DataModule1.Table.Modified then DataModule1.Table.Post;
Close;
end;

procedure TGetDataForm.AddImageClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
 DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;


На форме для каждого поля свой компонент.


 
Desdechado ©   (2006-05-07 22:47) [6]

1. кода сохранения не вижу
2. структуры таблицы (а не ее дельфийского представления) не вижу

DBImage не поймет ничего, кроме BMP
используй простой TImage, в который подпихивай преобразованную из другого формата в BMP картинку


 
sniknik ©   (2006-05-07 23:07) [7]

> Вот я и спрашиваю как правильно?
так чтобы работало.

например, вот так будет правильно (один из возможных вариантов)
ADODataSet1.Edit;
TBlobField(ADODataSet1.FieldByName("ImField")).LoadFromFile(OpenPictureDialog1.F ileName);
ADODataSet1.Post;


> Table: TADOTable;
а вот TADOTable это уже неправильно, в принципе, идеологически, это не BDE чтобы таблици использовать.

> используй простой TImage, в который подпихивай преобразованную из другого формата в BMP картинку
не надо преобразовывать, для jpg

var
 Stream: TMemoryStream;
 jp: TJPEGImage;

...
 Stream:= TMemoryStream.Create;
 try
   TBLOBField(ADODataSet1.FieldByName("ImField")).SaveToStream(Stream);
   jp:= TJPEGImage.Create;
   try
     Stream.Position:= 0;
     jp.LoadFromStream(Stream);
     Image1.Picture.Graphic:= jp;
   finally
     jp.Free;
   end;
 finally
   Stream.Free;
 end;


 
аматор ©   (2006-05-08 00:03) [8]

Привет..
Б..: занимаюсь рекламой, НО советую прочитать (электронный справочник) DelphiWorld6. И пойди купи книгу, или в инете поищи. Когда я начинал так с яндексом и рамблером, потом на этот сайт вышел.


 
illuha   (2006-05-08 02:52) [9]


> а вот TADOTable это уже неправильно, в принципе, идеологически,
>  это не BDE чтобы таблици использовать

т.е. предлагается вместо TADOTable использовать TADODataSet?
С катинкой получилось, спасибо sniknik.
Встал вопрос как быть с другими форматами (предпологаеться использование разных графических форматов), преобразовывать или есть решение красивей?


 
Johnmen ©   (2006-05-08 20:53) [10]


> Встал вопрос как быть с другими форматами


А что с ними?


 
illuha   (2006-05-08 22:53) [11]


> А что с ними?

Просто стоит вопрос с отображением на компонент, но это уже из другой оперы.
Всем спасибо.


 
Desdechado ©   (2006-05-10 11:08) [12]

sniknik ©   (07.05.06 23:07) [7]
> не надо преобразовывать, для jpg
а что по-твоему вот это, как не преобразование?

> Image1.Picture.Graphic:= jp;

а с другими форматами тоже придется преобразовывать
вопрос только в том, хранить ли оригинальное с преобразованием при показе или хранить уже преобразованное без преобразования при показе
я бы выбрал первое


 
sniknik ©   (2006-05-10 11:32) [13]

> а что по-твоему вот это, как не преобразование?
>> Image1.Picture.Graphic:= jp;

дамаеш? ну тогда попробуй сделать после этого Image1.Picture.Bitmap.SaveToFile(...) сохранить, и просмотреть "преобразованный" рисунок.



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
1-1149029289
Razor
2006-05-31 02:48
2006.07.09
Как связать Delphi7 и chm?


2-1150509587
fantasy
2006-06-17 05:59
2006.07.09
SQL


2-1150976741
Tochka
2006-06-22 15:45
2006.07.09
Выключение комьпютера


15-1149783297
grisme
2006-06-08 20:14
2006.07.09
Преобразование указателя


2-1150865087
mctarik
2006-06-21 08:44
2006.07.09
Как передать строку в коммандную строку...





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