Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Присылайте нам Донат :), напишите за что прислали )


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

Доброе всем время суток,
У меня есть графические файлы с расширением 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 в 11:53.
KBO вне форума   Ответить с цитированием
Старый 15.11.2015, 11:55   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,815
Репутация: 6832
По умолчанию

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

Цитата:
Сообщение от 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 в 18:56.
KBO вне форума   Ответить с цитированием
Старый 15.11.2015, 21:32   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,668
Репутация: 6586
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


07:45.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru