Форум: "Базы";
Текущий архив: 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