![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TADOQuery и BLOB-поле [D7, MSSQL]
BBCHa © (2008-07-04 19:01:00)Знатоки, подскажите!
Возможно ли запихать SQL - запросом содержимое TImage (bmp, jpg) в базу и вытянуть опять же SQL-запросом обратно???
D7, база MsSQL.
Заранее пасибо.
Нат (2008-07-30 00:25:00) [1]http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625472&n=14
Нат (2008-07-29 18:51:00) [2]Стандартный DBImage не умеет работать с jpeg
Универсальное свойство - Picture
Используйте в Image.Picture.LoadFromFile(), Image.Picture.Assign(),
Также LoadFromStream(), CreateBlobStream, SaveToFile
Запрос на сохранение
insert into MyTable ( MyPictureField) values ( :ParamPict);
на удаление
Update MyTable set MyPictureField = null where ID= КлючНужнойЗаписи;
piople (2008-07-25 05:24:00) [3]Ega23 ©, хз, тебе виднее...
Ega23 (2008-07-24 10:00:00) [4]
> Для некоторых баз данных через BDE так можно загрузить не
> более 64k
В настройках алиаса параметр BLOB Size для лохов придуман?
piople (2008-07-24 07:38:00) [5]1. Через таблицу:
(table1.fieldbyname('ddd') as TBlobField).loadfromfile('dddss');
Для некоторых баз данных через BDE так можно загрузить не более 64k
2. через параметры в квере...
ADOquery1.sql.text:='Insert into myTable (a) Values (:b)';
ADOQuery1.parameters.parseSQL(ADOquery1.sql.text, true);
ADOQuery1.parameters.parambyname('b').LoadFromFile('MyFile');
ADOQuery1.execsql;
Ega23 (2008-07-23 15:30:00) [6]
> Пиши еще тип в другое поле.
Зачем???
JPEG должен начинаться с $FFD8, bmp - $424D (в bmp, по-моему, в сигнатуре ещё 3-й байт участвует). Стрим у тебя уже есть. Читаешь 2 байта и смотрищь, чему они равны.
zorik (2008-07-23 15:27:00) [7]
> stas © (23.07.08 15:24) [27]
Мне уже неактуально это.
Насорили здесь, а автора вопроса уже давно нет
stas (2008-07-23 15:24:00) [8]zorik © (23.07.08 15:07) [26]
Пиши еще тип в другое поле.
zorik (2008-07-23 15:07:00) [9]Поиск по словах DBImage+JPEG дает много ссылок как с этим боротся -- грузить в Image или же использовать сторонние компоненты. Тут проблема в том, что надо предварительно определить что в блобе: битмап грузится в picture.bitmap, a jpeg в picture.graphic
Ega23 (2008-07-23 12:12:00) [10]
> нет возможности у стандартного DBImage отображать JPEG.
Да? Я просто этой фигнёй не пользовался никогда... А для обычного - достаточно uses jpeg дописать...
stas (2008-07-23 12:09:00) [11]Ega23 © (23.07.08 11:03) [21]
Причем здесь uses jpeg?
нет возможности у стандартного DBImage отображать JPEG.
Anatoly Podgoretsky (2008-07-23 11:57:00) [12]
> zorik © (23.07.08 09:31) [13]
Так тут еще вопрос, как различать, что в поле, поле то не OLE
А если судить по твоему советуж, то тебе как то все равно это
> zorik © (23.07.08 10:48) [18]
zorik (2008-07-23 11:06:00) [13]
> uses JPEG; ?
Да
"Bitmap Image is not valid"
Ega23 (2008-07-23 11:03:00) [14]
> На практике, только что проверил, jpeg у меня не отображался.
uses JPEG; ?
zorik (2008-07-23 10:57:00) [15]
> Ega23 © (23.07.08 10:51) [19]
На практике, только что проверил, jpeg у меня не отображался. Использую TJvDBImage (JEDI) -- там все ок. Может где-то в свойствах TDBImage.Picture надо формат задавать и тогда все будет ок. Не знаю )))
Ega23 (2008-07-23 10:51:00) [16]
> Стандартный TDBImage, насколько мне не изменяет память,
> отображает только bitmap
Изменяет. Не только битмап.
zorik (2008-07-23 10:48:00) [17]
> Теперь в самый раз вспомнить, что кроме TImage есть и TDBImage
Только в случае с bitmap. Стандартный TDBImage, насколько мне не изменяет память, отображает только bitmap
Anatoly Podgoretsky (2008-07-23 10:21:00) [18]Теперь в самый раз вспомнить, что кроме TImage есть и TDBImage
Ega23 (2008-07-23 09:49:00) [19]
> Визуализация сохраненной картинки
> frWorkersService.edPhoto_Worker.Picture.Assign(TBlobField(Query.
> FieldByNam e('Photo')));
var
ms : TMemoryStream;
bmp : TBitmap;
begin
with Query do
begin
if (not Active) or (IsEmty) then Exit;
ms := TMemoryStream.Create;
try
TBLOBField(FieldByName('Photo')).SaveToStream(ms);
ms.Position := 0;
bmp := TBitmap.Create;
try
bmp.LoadFromStream(ms);
edPhoto_Worker.Picture.Assign(bmp);
finally
bmp.Free;
end;
finally
ms.Free;
end;
end;
end;
Ega23 (2008-07-23 09:45:00) [20]
> zorik © (23.07.08 09:31) [13]
Зачем грузить из файла в стрим, а потом из стрима в BLOBField, если у TBLOBField есть метод LoadFromFile????