![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BLOB not opened [D7, XP]
D@Nger © (2006-05-31 07:29:00)Здравствуйте мастера. Пытаюсь все запихать изображение JPG в BLOB поле и делаю это следующим образом:
dbimage1.Picture.LoadFromFile(opendialog1.FileName);
fmain.sotrud_tbl.Edit;
bs:=TBlobStream.Create(fmain.sotrud_tbl.fieldbyname('foto') as TblobField,bmWrite);
dbimage1.Picture.Graphic.SaveToStream(bs);
fmain.sotrud_tbl.Post;
bs.Free;
Выходит сообщение об ошибке "BLOB not opened" , а как его открыть ?
D@Nger (2006-05-31 14:59:00) [1]Тема закрыта
D@Nger (2006-05-31 14:57:00) [2]Все сделал! Большое вам СПАСИБО Сергей М. Для остальных программеров столкнувшихся с этой проблемой пишу код считывания JPG из BLOB поля в Timage:
var bs:TBlobStream;
jp:TJPEGIMAGE;
begin
Bs := TBlobStream.Create(fmain.sotrud_tbl.fieldbyname('foto') as TblobField, bmRead);
jp:=TJPEGImage.Create;
jp.LoadFromStream(bs);
jp.DIBNeeded;
image1.Picture.Graphic:=jp;
jp.Free;
bs.Free;
end;
Сергей М. (2006-05-31 12:25:00) [3]
> не могу считать из BLOB поля картинку в Image1:Timage
Потому что Timage не работатает с JPG-форматом.
см. справку к TJPEGImage
D@Nger (2006-05-31 12:03:00) [4]После долгих мучений вроде получилось поместить JPП в BLOB поле.
Правильно ли я сделал ?:
var b:TBlobField;
begin
if opendialog1.Execute then
begin
fmain.sotrud_tbl.Edit;
b:=fmain.sotrud_tbl.fieldbyname('foto') as TblobField;
b.LoadFromFile(opendialog1.FileName);
fmain.sotrud_tbl.post;
end;
end;
Теперь не могу считать из BLOB поля картинку в Image1:Timage;
Подскажите кто знает !
Сергей М. (2006-05-31 10:15:00) [5]Есть, в справке !
D@Nger (2006-05-31 10:09:00) [6]а готовый пример есть ?
Сергей М. (2006-05-31 09:59:00) [7]TargetStream: TStream;
p.s.
Вообще-то в станд.справке есть пример использования TDataSet.CreateBlobStream().
Попробуй догадайся с трех раз, для кого писана Борландом эта справка ..
D@Nger (2006-05-31 09:54:00) [8]Извените конечно Сергей М., но что-то у меня всё равно не получается.
TargetStream := fmain.sotrud_tbl.CreateBlobStream(fmain.sotrud_tbl.fieldbyname('foto') as TBlobField, bmWrite);
TargetStream и вторая половина разных типов...
я уже и так и сяк пробовал ничего не выходит, неужели это так сложно ?
D@Nger (2006-05-31 09:15:00) [9]Большое спасибо!
Сергей М. (2006-05-31 09:08:00) [10]SourceStream: TStream;
TargetStream: TBlobStream;
SourceStream := TFileStream.Create(opendialog1.FileName, fmOpenRead);
fmain.sotrud_tbl.Edit;
TargetStream := fmain.sotrud_tbl. CreateBlobStream(fmain.sotrud_tbl.fieldbyname('foto') as TBlobField, bmWrite);
TargetStream.CopyFrom(SourceStream);
fmain.sotrud_tbl.Post;
SourceStream.Free;
TargetStream.Free;