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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2013, 01:22   #1
damuriders
 
Регистрация: 18.12.2012
Сообщений: 6
По умолчанию Изображения в Access

Если надоел понимаю, но один вопрос.
Как из MS Access вывести изображение. Т.е. таблица с данными, и в одном поле изображение.
В таблице сделал поле объекта OLE. а как вывести с помощью ADOQuery?
damuriders вне форума Ответить с цитированием
Старый 04.01.2013, 02:46   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Сам долго дрался не на жизнь, а на смерть с этим Access. У тебя на форме должна быть компонента "Image1". Попробуй так:
Код:
uses .................,ADODB, Jpeg;
....................
var
 ms: TADOBlobStream;
 s:string;
 Code:word;
yes:boolean;
begin
yes:=false;
// заносим из таблицы "Code_FIO_worker" в строку "s" код сотрудника, которого будем искать в другой таблице
  s:=DataModule3.T_CODE_FIO_worker.FieldByName('CODE').Value;
// ищем соответствующую строку с кодом сотрудника, чтобы прошарить Blob-поле.
   DataModule3.T_CODE_PHOTO.Locate('CODE',s,[loCaseInsensitive]);
// Создаем поток для фотки, в который сразу заносим найденную фотографию. Открываем лишь для чтения
  ms := TADOBlobStream.Create(DataModule3.T_CODE_PHOTO.FieldByName('PHOTO') as TBlobField,bmRead);
  try
// считываем 4 первых байта с потока
ms.Read(Code,SizeOf(Code)); ms.Seek(0,0);

case Code of
// если индетификатор BMP-файла, то
  $4D42: begin
    Image1.Picture.Graphic:=TBitmap.Create;
    Image1.Picture.Graphic.LoadFromStream(ms);
  end;
// если индетификатор JPG-файла, то
  $D8FF: begin
    Image1.Picture.Graphic:=TJPEGImage.Create;
    Image1.Picture.Graphic.LoadFromStream(ms);
  end;
// в моей БД фотки можно было заносить из Access и из слепленного интерфейса. 
//Если первые 4 байта равны "1C15", то значит фотка была залита из Access. А 
//Access в начале файла записывает свои данные, равные 82 байтам. Там хранится 
//разного рода инфа, типа чем открывать и т.д. Поэтому мы перескакиваем 82 байта...
  $1C15: begin
    ms.Seek(82, soFromBeginning);
    yes:=true;
  end;
end;
if yes then
begin
ms.Read(Code,SizeOf(Code)); ms.Seek(82, soFromBeginning);
//... и опять смотрим какого формата файл.
case code of
  $4D42: begin
    Image1.Picture.Graphic:=TBitmap.Create;
    Image1.Picture.Graphic.LoadFromStream(ms);
  end;
  $D8FF: begin
    Image1.Picture.Graphic:=TJPEGImage.Create;
    Image1.Picture.Graphic.LoadFromStream(ms);
  end;
end;
end;
  finally ms.Free;
 end;
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 04.01.2013 в 02:52. Причина: корректировка
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск дублей в нескольких таблицах Access (Access +SQL) Delphi_developer Помощь студентам 3 26.09.2012 16:46
Есть БД на Access 2.0, нужно открыть в Access 2003 Spirit_33 Microsoft Office Access 1 23.07.2009 07:59
Нужна помощь по вставке изображения путем VBA ACCESS в файл EXCEL AlVBA Microsoft Office Access 2 18.05.2009 15:58
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Delphy и Access.вводя инфу во вторичный файл Access, она отражалась в первом ADOTable Lev БД в Delphi 0 11.11.2007 12:14