Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2012, 08:00   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию Access 2007, TurboDelphi, OLE-поле

На Access 2007 создал БД. Там есть таблица CODE_PHOTO, где поля:
CODE - числовой, PHOTO- поле OLE. Загрузил пару картинок формата jpg всё в том же Access. Cохранил в формате *.mdb .
Через TurboDelphi всё подключил через ADO, настроил, все нормально работает, кроме
выгрузки картинок из БД в TImage. Пытался выгружать через TMemoryStream и через TADOBlobStream, и сюда тоже заходил. Поиск по форуму не решил проблему. Выдаёт ошибку "Jpeg Error #53". При трассировке с помощью точки останова на создании TMemoryStream и присваивании ему данных из blob-поля в объектном инспекторе напротив переменной типа TMemoryStream не отображается никаких данных.
Попытался поизвращаться. Если из acess'a тыкнуть на blob-поле и нажать ctrl+С и в любой папке нажать ctrl+V , то сохранится документ BMP формата и его можно открыть. Если написать такой код
Код:
  ms := TADOBlobStream.Create(DataModule3.T_CODE_PHOTO.FieldByName('PHOTO') as TBlobField,bmRead);
    ms.SaveToFile('123.bmp');
то создастся файл с таким же размером, как и при ctrl+C, ctrl+V , но открыть его не получается.
На сторонних сайтах писали, что при загрузке через Access к файлу приписываются какие-то данные, и нормально не получится считать - нужно знать сигнатуру.

В MainForm.pas на 432 строке начинается процедура procedure TForm2.DBGrid2DblClick(Sender: TObject); . В конце этой процедуры злополучные закомментированные строки кода, которые не работают.
Исходники залил на rghost.ru , если кому-то вдруг захочется повозиться с самой БД.
Пароль к самой DB1 - 123456 .
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 13.03.2012 в 08:43.
Rin вне форума Ответить с цитированием
Старый 13.03.2012, 09:16   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

При загрузке картинки через Access и попытке открыть её посредством TADOBlobMemory в начало картинки записываются 82 байта, которые и мешают нормальной загрузке (заморочился в Hex -редакторе).
Вот в принципе чем картинка обрастает:
PHP код:
3       яяяяТочечный рисунок Paint.Picture         PBrush         @Ь 
Недолго думая, поступил так.
Код:
  ms := TADOBlobStream.Create(DataModule3.T_CODE_PHOTO.FieldByName('PHOTO') as TBlobField,bmRead);
  try
        ms.Seek(82, soFromBeginning);
        Form4.Image1.Picture.Graphic:=TBitmap.Create;
        Form4.Image1.Picture.Graphic.LoadFromStream(ms);
  finally ms.Free;
 end;
IT'S WORK! )))
Тему можно закрывать.

rdama
DBImage ругается на то, что это не bmp-шный формат. А всё из-за 82 байт в начале файла.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 13.03.2012 в 11:05.
Rin вне форума Ответить с цитированием
Старый 13.03.2012, 09:51   #3
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Может DBImage
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из простого мемо записать в поле БД Access в поле тоже типа мемо с сохранением всех абзацев пробелов Speeker БД в Delphi 2 28.11.2011 16:22
Импорт листа Excel из ячейки OLE базы данных Access Gawwws Microsoft Office Excel 1 14.01.2011 00:58
Почему Access 2007 воспринимает поле как параметр? Сергей089 Microsoft Office Access 1 12.11.2010 21:15
Тип данных OLE для таблиц Access rockedit БД в Delphi 1 12.12.2009 21:15
OLE Access обновить ссылки на прилинкованные файлы /VBS,C++,Delphi/ mrStrike Microsoft Office Access 0 02.04.2009 10:48