Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

TDBImage не показывает картинки из БД через ADO   Найти похожие ветки 

 
Hound_Dog ©   (2004-05-03 14:56) [0]

Итак, есть БД Акцеес 2000, доступ производится через ADO. В таблице БД хранятся катринки (поле объекта OLE). Связка ADOConnection - ADOQuery - DataSet - DBGrid. Поле с картинкой отображается в DBGrid как BLOB. Окей, привязываем компонент TDBImage к полю pic (то есть картинка). Не показывает, несмотря на любые данные в таблице - BMP, JPEG, GIF.
Присвоение по событию DBImage1.Picture.Bitmap.Assign(TBLOBField (ADOQuery2.FieldByName("pic"))); так же ничего не дает (вылетает с той же ошибкой Bitmap image is not valid) (ADOQuery2.SQL = "SELECT pic FROM table1 where index = 2)

Что не так, подскажите? третий день бьюсь.


 
sniknik ©   (2004-05-03 16:51) [1]

ложи картинку в базу из дельфей аналогично как и читаеш (через DBImage1 к примеру) - DBImage1.LoadFromFile().

OLE поле это не совсем битмап, вернее там может быть что угодно,  обьект даже не относящийся к рисункам, если читаеш обьекты то должен уметь их различать.


 
Hound_Dog ©   (2004-05-05 08:48) [2]

Гым...
Я знаю, что ОЛЕ это не всегда рисунок, в общем случае набор байт.
Тут картина какая - я так сказать, точно знаю, что в этом поле, поскольку сам туда это засунул. Дело же в следующем: БД наполняется не из дельфи-клиента, а из собственной акцесс-формы, а дельф мне потребовался для описания автоматизации с CorelDRAW. В принципе, в БД хрянятся мемо-поля и джипеги, а моя задача - написать програмулину кидающую текст и картинки в CDRW. С Корелем все более-менее ясно, а вот с картинками.... Ну нет у меня возможности и желания переписывать Акцесс на Дельфи.


 
Andriy Tysh ©   (2004-05-05 10:18) [3]


> DBImage1.Picture.Bitmap.Assign(TBLOBField (ADOQuery2.FieldByName("pic")));
>

Это прокатит если тянешь BMP.
Я в ДВГриде тоже рисовал. То написал процедуру, которая проверяет BMP или JPEG (иного у меня нет). Может и Вы попробуйте после вытягивания проверить или переконвертировать в удобный формат.


 
sniknik ©   (2004-05-05 11:09) [4]

> Дело же в следующем: БД наполняется не из дельфи-клиента
вот с этого надо было начинать, что наполняется не из дельфей
ты формат знаеш? там префикс в данных (82 длинна) с описанием что это за обьект (это если стандартно из Access ложить)
вот стандартный доступ к BMP

var Stream: TMemoryStream;
   Pref: Word;
begin
 Stream:= TMemoryStream.Create;
 try
   TBLOBField(ADODataSet1.FieldByName("ImField")).SaveToStream(Stream);
   if Stream.Size <> 0 then begin
     Stream.Position:= 0;
     Stream.ReadBuffer(Pref, 2);
     if Pref = $4D42 then DBImage1.DataSource:= DataSource1 //это положено из дельфей включаем стандартный DBImage
     else begin //это аксесом перекладываем в Image
       Stream.Position:= 82;
       Image1.Picture.Bitmap.LoadFromStream(Stream);
     end;
   end;
 finally
   Stream.Free;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
14-1084194736
Piter
2004-05-10 17:12
2004.05.30
Кто-нибудь играл в Коммандос-3?


1-1084767681
Бушин Сергей
2004-05-17 08:21
2004.05.30
Можно ли узнать, что прога откомпилирована именно Delphi


9-1075584663
Millennium
2004-02-01 00:31
2004.05.30
диалоги в играх


3-1084266514
Shura
2004-05-11 13:08
2004.05.30
ADOConnection. Не закрывается соединение с базой данных.


14-1083991656
Korneley
2004-05-08 08:47
2004.05.30
Как посчитать расстояние в метрах по географическим координатам?