![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размещение изображения в таблице Access [D6]
leonidus © (2008-01-27 01:20:00)Есть таблица с 3-мя текстовыми полями и одним OLE в котором планирую хранить изображения. Доступ к базе реализую через ADO. На форме лежит 3 DBEdit и один DBImage соответственно. Вопрос в следующем, как добавить изображение в таблицу ? Т.е. я добавляю новую запись, заполняю все три текстовых поля через соответствующие DBEdit-контролы, но как заполнить OLE-поле? Пробовал обработать двойной клик по DBImage:
if OpenPictureDialog1.Execute then
begin
ADODataSet1.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
однако картинка в базу не сохраняется. Как быть?
leonidus (2008-01-28 18:16:00) [1]Проблема решена, всем спасибо.
Плохиш (2008-01-28 11:17:00) [2]
> leonidus (27.01.08 14:12) [8]
> но теперь другая проблема, программа принимает только bmp,
> и 10 картинок раздули файл БД до 5 Мб, как сделать поддержку
> JPG-файлов?
Надо отказаться от DBImage, сохранять в базе тип картинки и самостоятельно её отрисовывать.
leonidus (2008-01-27 14:12:00) [3]вопрос решен:
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-файлов?
sniknik (2008-01-27 13:51:00) [4]с bmp положенной самостоятельно работает? вот и делай так. однотипно. если задашься целью все сделать универсально - "утонешь в частностях". и плюс сделаешь неповоротливого монстра с которым невозможно работать... даже не имхо.
leonidus (2008-01-27 13:35:00) [5]так как же мне с наименьшем гемороем добавить возможность отображения в программе картинок и возможность добавляя записи заполнять не только текстовые поля но и добавлять в базу графику?
sniknik (2008-01-27 13:25:00) [6]потому что там ты добавляешь не файл, а обьект в котором кроме данных есть еще и инфа о том чем его открывать. dbimage ожидающий "чистый" bmp естественно его не понимает... (его поймет OLE контейнер, если ты считаешь из поля данные и положишь в него через стрим например.)
или можеш взять обработку и отображение на себя и обрезать ненужные префиксы в данных до отображения... (если конечно не хочеш взять на себя более глобальное написание универсального наследника от dbimage ;о)). пока вроде нет такого)
leonidus (2008-01-27 12:25:00) [7]Ок, тогда почему если в аксесе я принудительно добавляю bmp-файл в OLE-поле, то при запуске программы когда происходит связывание с mdb-файлом, я получаю исключение EInvalidGraphic и сообщение "Bitmap image is not valid" хотя bmp-файл абсолютно нормальный и корректно открывается паинтом?
sniknik (2008-01-27 11:59:00) [8]> тоже не катит...
значит ищи глюк в программе/данных... т.е. например у DBImage1 не определен источник данный (DataSource) на момент присвоения, и значит некуда сохранять, или загружается картинка в не в том формате, и значит "навеска" поддерживает отображение но конвертация не предусмотрена... (попробуй bmp).
leonidus (2008-01-27 11:41:00) [9]Да нет, с Post`ом я уже экспериментировал:
if OpenPictureDialog1.Execute then
begin
ADODataSet1.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
ADODataSet1.Post;
end;
тоже не катит...
sniknik (2008-01-27 01:44:00) [10]Post; забыл.