![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не сохраняются *.jpg в Access [D7, Access 2003]
illuha © (2006-05-07 13:26:00)В таблице имеется поле с двоичными данными, в котором хранятся графические файлы, но в таблице сохраняется только *.bmp, другие форматы не сохраняются. Почему?
Файл базы получается очень большой, т. е после удаления записей из базы, размер не уменьшается (DataModule1.Table.Delete;).
С базами, только учусь если не сложно то по подробней.
sniknik (2006-05-10 11:32:00) [1]> а что по-твоему вот это, как не преобразование?
>> Image1.Picture.Graphic:= jp;
дамаеш? ну тогда попробуй сделать после этого Image1.Picture. Bitmap.SaveToFile(...) сохранить, и просмотреть "преобразованный" рисунок.
Desdechado (2006-05-10 11:08:00) [2]sniknik © (07.05.06 23:07) [7]
> не надо преобразовывать, для jpg
а что по-твоему вот это, как не преобразование?
> Image1.Picture.Graphic:= jp;
а с другими форматами тоже придется преобразовывать
вопрос только в том, хранить ли оригинальное с преобразованием при показе или хранить уже преобразованное без преобразования при показе
я бы выбрал первое
illuha (2006-05-08 22:53:00) [3]
> А что с ними?
Просто стоит вопрос с отображением на компонент, но это уже из другой оперы.
Всем спасибо.
Johnmen (2006-05-08 20:53:00) [4]
> Встал вопрос как быть с другими форматами
А что с ними?
illuha (2006-05-08 02:52:00) [5]
> а вот TADOTable это уже неправильно, в принципе, идеологически,
> это не BDE чтобы таблици использовать
т.е. предлагается вместо TADOTable использовать TADODataSet?
С катинкой получилось, спасибо sniknik.
Встал вопрос как быть с другими форматами (предпологаеться использование разных графических форматов), преобразовывать или есть решение красивей?
аматор (2006-05-08 00:03:00) [6]Привет..
Б..: занимаюсь рекламой, НО советую прочитать (электронный справочник) DelphiWorld6. И пойди купи книгу, или в инете поищи. Когда я начинал так с яндексом и рамблером, потом на этот сайт вышел.
sniknik (2006-05-07 23:07:00) [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;
Desdechado (2006-05-07 22:47:00) [8]1. кода сохранения не вижу
2. структуры таблицы (а не ее дельфийского представления) не вижу
DBImage не поймет ничего, кроме BMP
используй простой TImage, в который подпихивай преобразованную из другого формата в BMP картинку
illuha (2006-05-07 22:33:00) [9]
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:13:00) [10]лучше покажи, как сохраняешь (код) и куда (структуру таблицы)
illuha (2006-05-07 21:45:00) [11]
> неправильно сохраняеш
Вот я и спрашиваю как правильно?
Может какую книгу посоветуешь для начали или где в сети почитать?
Desdechado (2006-05-07 15:40:00) [12]> после удаления записей из базы размер не уменьшается
Нет смысла. Просто этоместо помечается как свободное и занимается при последующих записях без увеличения размера БД. Это быстро, экономно и логично.
sniknik (2006-05-07 13:48:00) [13]> другие форматы не сохраняются. Почему?
неправильно сохраняеш.
> размер не уменьшается
не должен. логика работы движка базы такая (в принципе движки (абсолютное большинство) все ведут себя похожим образом)
надо делать упаковку, но желательно не очень часто (если делать после каждой удаленной записи можно здорово затормозить работу), так, примерно, раз в две три недели пойдет.
> С базами, только учусь если не сложно то по подробней.
книжку на заказ? для одного читателя? тираж оплатиш?