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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2015, 12:05   #1
Betterthanyou
Пользователь
 
Аватар для Betterthanyou
 
Регистрация: 06.06.2015
Сообщений: 11
По умолчанию MS Access Как загрузить в БД изображения

У меня есть такой код для загрузки изображения в DBImage1
Код:
if (OpenPictureDialog1->Execute())
{
     DBImage1->Picture->LoadFromFile( OpenPictureDialog1->FileName );
}
Как его загрузить в БД ?
Код:
Form1->komanda->Fields->Fields[1]=DBImage1;
E2034 Cannot convert 'TDBImage *' to 'TField *'
Betterthanyou вне форума Ответить с цитированием
Старый 06.06.2015, 12:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if (OpenPictureDialog1->Execute())
{
     Form1->komanda->Fields->Fields[1]->LoadFromFile( OpenPictureDialog1->FileName );
}
А вообще DBImage должен сам загружать в базу...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.06.2015, 12:56   #3
Betterthanyou
Пользователь
 
Аватар для Betterthanyou
 
Регистрация: 06.06.2015
Сообщений: 11
По умолчанию

не работает
Код:
if (OpenPictureDialog1->Execute())
{
     Form1->komanda->Fields->Fields[1]->LoadFromFile( OpenPictureDialog1->FileName );
}
[bcc32 Error] Unit2.cpp(42): E2316 'LoadFromFile' is not a member of 'TField'
Full parser context
Unit2.cpp(39): parsing: void _fastcall TForm2::Button1Click(TObject *)
Betterthanyou вне форума Ответить с цитированием
Старый 06.06.2015, 13:40   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Должно быть приведение типа, типа:
Код:
reinterpret_cast<TBlobField>(Form1->komanda->Fields->Fields[1])->LoadFromFile(OpenPictureDialog1->FileName);
Vapaamies вне форума Ответить с цитированием
Старый 06.06.2015, 13:42   #5
Betterthanyou
Пользователь
 
Аватар для Betterthanyou
 
Регистрация: 06.06.2015
Сообщений: 11
По умолчанию

наверное я что-то делаю не так, если кто-то скины хотя бы пример программы где есть загрузка фото в БД я буду благодарен, я использую среду C++Builder XE7

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
Должно быть приведение типа, типа:
Код:
reinterpret_cast<TBlobField>(Form1->komanda->Fields->Fields[1])->LoadFromFile(OpenPictureDialog1->FileName);
и это не работает
[bcc32 Error] Unit2.cpp(71): E2031 Cannot cast from 'TField *' to 'TBlobField'
Full parser context
Unit2.cpp(68): parsing: void _fastcall TForm2::DBImage1Click(TObject *)

Последний раз редактировалось Stilet; 06.06.2015 в 13:52.
Betterthanyou вне форума Ответить с цитированием
Старый 06.06.2015, 13:59   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if (OpenPictureDialog1->Execute())
{
 TBlobStream* bb = new TBlobStream((TBlobField*)Form1->komanda->Fields->Fields[1], bmWrite); 
 TFileStream* fs=new TFileStream(OpenPictureDialog1->FileName,fmOpenRead);
 bb.CopyFrom(fs,fs->Size);
 delete fs;
 // Тут вызов метода Post для сохранения изменений.
}
Угадал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.06.2015, 14:10   #7
Betterthanyou
Пользователь
 
Аватар для Betterthanyou
 
Регистрация: 06.06.2015
Сообщений: 11
По умолчанию

Нет к сожалению
он не знает что такое TBlobStream
[bcc32 Error] Unit2.cpp(43): E2451 Undefined symbol 'TBlobStream'
Full parser context
Unit2.cpp(39): parsing: void _fastcall TForm2::Button1Click(TObject *)
Betterthanyou вне форума Ответить с цитированием
Старый 06.06.2015, 14:12   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

подключи хедер соответственный. DB вроде назвается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.06.2015, 14:35   #9
Betterthanyou
Пользователь
 
Аватар для Betterthanyou
 
Регистрация: 06.06.2015
Сообщений: 11
По умолчанию

Я подключил DBTables.hpp (http://docs.embarcadero.com/products...lobStream.html) и теперь у меня ошибка [bcc32 Error] DBTables.hpp(11): E2209 Unable to open include file 'Bde.DBTables.hpp'. Builder из меня просто издевается
Betterthanyou вне форума Ответить с цитированием
Старый 06.06.2015, 15:08   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Я погуглил , посмотрел это пример http://h-l-l.ru/publ/28-1-0-185 и делал за просто
1)
Код:
#include "jpeg.hpp"
2)
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if (OpenPictureDialog1->Execute())
   {
	   AnsiString CurrentFile = OpenPictureDialog1->FileName;
	   Image1->Picture->LoadFromFile(CurrentFile);
	   ADOQuery1->Edit();
       TMemoryStream* strm = new TMemoryStream();
       Image1->Picture->Graphic->SaveToStream(strm);
	   ((TGraphicField*)Form1->ADOQuery1->FieldByName("Image"))->LoadFromStream(strm);
       delete strm;
	   Form1->ADOQuery1->Post();
   }

}
3)
Код:
void __fastcall TForm1::ADOQuery1AfterScroll(TDataSet *DataSet)
{
  if(!(TBlobField*)ADOQuery1->FieldByName("Image")->IsNull){
	   if(!Image1->Visible)Image1->Visible=true;
	   TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
        ((TGraphicField*)ADOQuery1->FieldByName("Image"))->SaveToStream(strm);
		strm->Seek(0,0);
		if (*(Word*)strm->Memory == 0xD8FF)Image1->Picture->Graphic=ptJpg;
		Image1->Picture->Graphic->LoadFromStream(strm);
		delete strm;
		delete ptJpg;
	  }else
	  Image1->Visible=false;
}
держите https://yadi.sk/d/uRvV3sF3h7UMP DBImage не нужно берите просто Image формат JPEG сохраняет и отображает нормально
Цитата:
я использую среду C++Builder XE7
На данный момент версия Builder не имеет значения

Последний раз редактировалось xxbesoxx; 06.06.2015 в 15:34.
xxbesoxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изображения в Access damuriders БД в Delphi 1 04.01.2013 02:46
Как загрузить изображения с использованием Bitmap Pilgrimm C++ Builder 2 24.03.2011 07:56
Как загрузить фото ? DimOn4Ik БД в Delphi 4 12.04.2010 14:31
Как загрузить .txt? TwiX Общие вопросы Delphi 6 01.08.2009 01:47
Нужна помощь по вставке изображения путем VBA ACCESS в файл EXCEL AlVBA Microsoft Office Access 2 18.05.2009 15:58