Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Вниз

Размещение изображения в таблице 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
3-1201171203
harisma
2008-01-24 13:40
2008.07.06
TADODataSet с выходным параметром.


2-1212774296
DJ_UZer
2008-06-06 21:44
2008.07.06
При наведении файла на форму - открытие


2-1212932812
Ден
2008-06-08 17:46
2008.07.06
Управление окнами других приложений


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


15-1211363788
hungry_Duck
2008-05-21 13:56
2008.07.06
построение триангуляционной сетки по опорным точкам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский