Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.06;
Скачать: CL | DM;

Вниз

Размещение изображения в таблице Access   Найти похожие ветки 

 
leonidus   (2008-01-27 01:20) [0]

Есть таблица с 3-мя текстовыми полями и одним OLE в котором планирую хранить изображения. Доступ к базе реализую через ADO. На форме лежит 3 DBEdit и один DBImage соответственно. Вопрос в следующем, как добавить изображение в таблицу ? Т.е. я добавляю новую запись, заполняю все три текстовых поля через соответствующие DBEdit-контролы, но как заполнить OLE-поле? Пробовал обработать двойной клик по DBImage:

if OpenPictureDialog1.Execute then
begin
 ADODataSet1.Edit;
 DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

однако картинка в базу не сохраняется. Как быть?


 
sniknik ©   (2008-01-27 01:44) [1]

Post; забыл.


 
leonidus   (2008-01-27 11:41) [2]

Да нет, с Post`ом я уже экспериментировал:

if OpenPictureDialog1.Execute then
begin
 ADODataSet1.Edit;
 DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
 ADODataSet1.Post;
end;

тоже не катит...


 
sniknik ©   (2008-01-27 11:59) [3]

> тоже не катит...
значит ищи глюк в программе/данных... т.е. например у DBImage1 не определен источник данный (DataSource) на момент присвоения, и значит некуда сохранять, или загружается картинка в не в том формате, и значит "навеска" поддерживает отображение но конвертация не предусмотрена... (попробуй bmp).


 
leonidus   (2008-01-27 12:25) [4]

Ок, тогда почему если в аксесе я принудительно добавляю bmp-файл в OLE-поле, то при запуске программы когда происходит связывание с mdb-файлом, я получаю исключение EInvalidGraphic и сообщение "Bitmap image is not valid" хотя bmp-файл абсолютно нормальный и корректно открывается паинтом?


 
sniknik ©   (2008-01-27 13:25) [5]

потому что там ты добавляешь не файл, а обьект в котором кроме данных есть еще и инфа о том чем его открывать. dbimage ожидающий "чистый" bmp естественно его не понимает... (его поймет OLE контейнер, если ты считаешь из поля данные и положишь в него через стрим например.)
или можеш взять обработку и отображение на себя и обрезать ненужные префиксы в данных до отображения... (если конечно не хочеш взять на себя более глобальное написание универсального наследника от dbimage ;о)). пока вроде нет такого)


 
leonidus   (2008-01-27 13:35) [6]

так как же мне с наименьшем гемороем добавить возможность отображения в программе картинок и возможность добавляя записи заполнять не только текстовые поля но и добавлять в базу графику?


 
sniknik ©   (2008-01-27 13:51) [7]

с bmp положенной самостоятельно работает? вот и делай так. однотипно. если задашься целью все сделать универсально - "утонешь в частностях". и плюс сделаешь неповоротливого монстра с которым невозможно работать... даже не имхо.


 
leonidus   (2008-01-27 14:12) [8]

вопрос решен:

if OpenPictureDialog1.Execute then
begin
   str:=OpenPictureDialog1.FileName;
   DBImage1.Picture.LoadFromFile(str);
   ADODataSet1.Edit;
   TBlobField(ADODataSet1.FieldByName("picture")).LoadFromFile(str);
   ADODataSet1.Post;
end;

но теперь другая проблема, программа принимает только bmp, и 10 картинок раздули файл БД до 5 Мб, как сделать поддержку JPG-файлов?


 
Плохиш ©   (2008-01-28 11:17) [9]


> leonidus   (27.01.08 14:12) [8]


> но теперь другая проблема, программа принимает только bmp,
>  и 10 картинок раздули файл БД до 5 Мб, как сделать поддержку
> JPG-файлов?

Надо отказаться от DBImage, сохранять в базе тип картинки и самостоятельно её отрисовывать.


 
leonidus   (2008-01-28 18:16) [10]

Проблема решена, всем спасибо.



Страницы: 1 вся ветка

Текущий архив: 2008.07.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1212956273
Res
2008-06-09 00:17
2008.07.06
Непонятно


2-1212825750
TUserClass
2008-06-07 12:02
2008.07.06
OnMouseEnter и OnMouseLeave для всего ...


15-1211642824
Пробегал2...
2008-05-24 19:27
2008.07.06
Надпись на футболке


11-1190069573
harmly
2007-09-18 02:52
2008.07.06
koledb - возврат значения из поля numeric


2-1212997506
viperv
2008-06-09 11:45
2008.07.06
Компонент TWebBrowse