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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2015, 01:46   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Доброе всем время суток,
У меня есть графические файлы с расширением PNG, Я их гружу в БД (Firebird), с помощью:
Код:
IBQuery1.close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Text := 'insert into FOTO (ID, ID_ETALON, FOTO) values (:ID, :ID_ETALON, :FOTO)';
IBQuery1.Params.ParamByName('ID_ETALON').AsInteger := 3;
IBQuery1.Params.ParamByName('ID').AsInteger := 4;
IBQuery1.Params.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName, ftblob);
showmessage(IBQuery1.SQL.Text);
IBQuery1.ExecSQL;
IBTransaction2.CommitRetaining;
Все отрабатывает на ура.

Но если картинки грузить во так, через Dataset:
Код:
ibdsFoto.FieldByName('ID_ETALON').AsInteger := ibdsRegisterGovEtalon.FieldByName('ID').AsInteger;
TBlobField(ibdsFoto.FieldByName('FOTO')).LoadFromFile(OpenPictureDialog1.FileName);
То возникает ошибка, на второй строке:
«exception class EInvalidGraphic with message 'Bitmap image is not valid»

Почему компилятор вываливается именно на этой строке с такой ошибкой? И как с ней бороться?

Ошибка летит из за подвязанного к полю "FOTO", компонента TDBImage, как только я убираю связку его с полем, все становится замечательно.
Этот компонент умеет общаться только с файлами bmp
Но если покопаться в сети, можно найти MyDBControls.dpk стороннего умельца, который может понимать большенство форматов.

Последний раз редактировалось Stilet; 15.11.2015 в 10:53.
KBO вне форума Ответить с цитированием
Старый 15.11.2015, 10:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
То возникает ошибка, на второй строке:
Чтот я не верю что этот код дает такую ошибку.
Ты наверное хотел сказать, что ошибка вылетает как раз при просмотре картинки?
Это да. TDBImage не оч хорошо работает с форматами отличными от ВМР.
У тебя какая Делфи?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2015, 17:45   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Чтот я не верю что этот код дает такую ошибку.
Ты наверное хотел сказать, что ошибка вылетает как раз при просмотре картинки?
Это да. TDBImage не оч хорошо работает с форматами отличными от ВМР.
У тебя какая Делфи?
Delphi7.

Не а, после того как я выбрал в OpenPictureDialog1 картинку и нажал Open, то компилятор останавливается именно на строке:
Код:
TBlobField(ibdsFoto.FieldByName('FOTO')).LoadFromFile(OpenPictureDialog1.FileName);
Полный текст выгледет так:
Код:
OpenPictureDialog1.InitialDir := ExtractFileDir(application.ExeName)+'\';
 OpenPictureDialog1.Filter := 'Файлы фото (*.png)|*.png';
  if OpenPictureDialog1.Execute then
  begin
    ibdsFoto.FieldByName('ID_ETALON').AsInteger := ibdsRegisterGovEtalon.FieldByName('ID').AsInteger;
    TBlobField(ibdsFoto.FieldByName('FOTO')).LoadFromFile(OpenPictureDialog1.FileName);
  end
  else ibdsFoto.Cancel;
предполагаю что, картинку сразу хочет вывести TDBImage, каким-то образом, хотя...
Но факт остается фактом:
- отключаешь компонент, картинка спокойно записивается в БД.

Последний раз редактировалось KBO; 15.11.2015 в 17:56.
KBO вне форума Ответить с цитированием
Старый 15.11.2015, 20:32   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
предполагаю что, картинку сразу хочет вывести TDBImage, каким-то образом, хотя
А чего предполагать? Он именно для этого и предназначен. И именно так и поступает, в данном случае пытается
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при загрузке картинки в Image Дронн Мультимедиа в Delphi 11 02.01.2015 18:17
Out of Memory в делфи при загрузке картинки в BDImage, ае=) ТипичныйСтудент Помощь студентам 3 19.05.2013 22:57
Ошибка при редактировании в Query Toky БД в Delphi 8 14.12.2009 16:42
ОШИБКА ПРИ ЗАГРУЗКЕ Костян Пират Операционные системы общие вопросы 5 21.02.2009 12:14
Ошибка при загрузке.... Ronni10 Операционные системы общие вопросы 6 10.01.2008 22:20