MS Access +ADO + Delphi problem

  • Автор темы Elfik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

Elfik

Создал базу MS Access, в которой имеется поле типа <Bitmap Image>. Связываю эту базу через ADOConnection со своей программой. Делфа видит тип этого поля как TBlobField. Пробую связать его с TImage через Assign ( CarImage.Picture.Assign(Cars.FieldByName('Photo')); ) - выдает ошибку"Bitmap image is not valid". То же самое имеем и с компонентом TDBImage.
Подскажите пожалуйста что надо сделать, чтобы отобразить рисунок из базы. Спасибо всем, кто откликнется.
 
B

Barmutik

А каким образом ты помещаеш туда картинку?

У меня проблема была такая ... но я из неё вышел следующим образом... вычитывал через TBloBStream.. а потом делал LoadFromStream у компонента котороый будет показывать ...
 
E

Elfik

В Access ставлю тип поля OLE Object. Потом Вставка->Обьект->Bitmap Image. Появляется окно mspaint, куда и копирую вставленую перед тем в clipboard картинку ну и Update Base.
И, если не трудно, наведи плз кусочек кода, где делается запись Blob'а в Stream, а потом считывание его компонентом.
 
E

Elfik

По ходу дела вроде разобрался.
Это OLEObject, поэтому он никак не пойдёт в связке с компонентом TImage. Я думаю, здесь надо поставить на форму OLEContainer, а потом связать его с нашим полем, создав перед тем из него OLEObject:
uses COMOLE;

var Container:TOLEContainer
Fotka:Olevariant;
begin
Fotka:=CreateOLEObject(DataModule2.Cars.FieldByName('Photo'));
.....

Ну и далее по сценарию:). Ссылка:
 
B

Barmutik

нее .. в этом поле можно хранить любые двоичные данные.

Другой вопрос что помещаеш ты их как ОЛЕ объект а пытаешся вычитать как рисунок... в этом и проблема..

Ты помещай из Дельфей как рисунок .. тогда он спокойно и вычитается как рисунок ...
 
P

Peter

Доброго времени суток!

Помогите пожалуйста если есть у кого готовый пример полностью рабочий по выше приведенноу вопросу скиньте ссылку!

Заранее благодарен!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!