Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо