Форум: "Базы";
Текущий архив: 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 картинку
не надо преобразовывать, для jpgvar
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