Автор вопроса: Dark Engine | Web-сайт:www.wentas.2bb.ru | ICQ: 343191665
Возникла проблема с совместимостью вложений в базе данных. Попытка загнать в базу картинку выдает ошибку преобразования типов.
DAO 3.6
код примерно такой:
d2.Execute "CREATE TABLE tt(RecD LONGBINARY)"
Set d3 = d2.OpenRecordset("SELECT * FROM tt")
d3.AddNew
d3.Fields(0) = Picture1.Picture
d3.Update
При открытии созданной базы Access видит поле RecD как объект OLE, то есть предположительно тип поля указан верно. Что нужно сделать с картинкой в PictureBox, чтобы она нормально записалась в БД? Ну и сразу, как ее потом обратно в PictureBox?
Ничего. Мучился в свое время, плюнул и сделал массив картинок, а сохранять сериализацией. Сомнительно что средствами vb6 это возможно, хотя не факт, старичёк еще может удивлять
PictureBox при загрузке дает конверт в bmp и в базе картинки хранятся в том же виде. Потому и пытался загнать напрямую. Надо раздобыть что-то вроде конвертера из iPictureDisp в бинарку.
как вариант, писать побайтно в базу строку, состоящую из символов по принципу 1-3 символа (в зависимости от битности картинки) на точку. А символы цеплять через "Picture.Point". Правда, этот метод точночть даст маленькую, картинки потом восстанавливаться будут не очень симпатично, с пробелами. Но зато место сэкономить можно.
Мне нравится вариант с конвертацией. Как такое организовать, знает кто-нибудь?
s12
Кто ищет, тот найдет:
http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=29463
Там в конце накатано много, по факту, если убрать комментарии, выходит несколько меньше. Рабочесть еще не проверял. Файлег там нужен STG.tlb . Найти бы его.