как загрузить картинку в access ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

как загрузить картинку в access ?

Сообщение Diman1982 » 25.05.2006 (Чт) 15:02

Помогите плиз есль у кого нить примерчик небольшой как грузить в базу данных access jpg картинку и как ее потом оттуда достать?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 25.05.2006 (Чт) 15:10

Поиск по AppendChunk.
Лучший способ понять что-то самому — объяснить это другому.

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 25.05.2006 (Чт) 15:50

да делаю поиск, а ничего нет толком. Код пишется их самого access но как именно не знаю. LoadePicture(fn) - не подходит. Помогите кто знает

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 11:27

Нашел вот такой код, как и написано в форуме загрузка работает только с bmp файлами, как быть с jpg? помогите кто знает.

Img.Class = "Package" ' Set class name.
' Specify type of object.
Img.OLETypeAllowed = acOLELinked
' Specify source file.
Img.SourceDoc = s
' Create linked object.
Img.Action = acOLECreateLink
' Adjust control size.
'Img.SizeMode = acOLESizeZoom

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.05.2006 (Пт) 12:23

http://bbs.vbstreets.ru/viewtopic.php?t ... ppendchunk
Этот вопрос задавался столько раз, что ничего быть просто не может.
А тот код, что ты нашел - от лукавого.
Лучший способ понять что-то самому — объяснить это другому.

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 13:21

от какого лукавого, то что ты предлагаешь, этот вариант если открывать базу данных из приложения, а вот как раз вариант лукавого это загрузка файла в таблицу или форму этой таблицы из самого access-a, что в общем то и требуется. Но этот вариант не закачивает jpg файлы.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.05.2006 (Пт) 14:28

Неуч...
Вот как это из-под аксесса выглядит:
Код: Выделить всё
Sub AddPicture()
Dim rs As Recordset
Dim r() As Byte
    r = ReadFile("c:\temp\test.jpg")
    Set rs = CurrentDb.OpenRecordset("select olefield from tbl1")
    rs.AddNew
    rs("olefield").AppendChunk r
    rs.Update
End Sub

Надеюсь, что такое ReadFile, объяснять не надо? С GetChunk сам разберешься.
Лучший способ понять что-то самому — объяснить это другому.

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 15:30

Да ты не правильно понимаешь чего мне надо то :) В этом случае в таблицу пишутся двоичные данные, а мне надо формата package. Просто при просмотре формы, которая напрямую связана с таблицей, элемент, типа присоединенная рамка объекта, не сможет прочесть этих данных. Задача состоит в том, что бы рисунок формата jpg хранился в таблице, в ячейке типа OLE, а при просмотре формы, связанной с таблицей, можно было бы увидеть этот рисунок. А при необходимости можно было бы загрузить в форму, которая сама, из принципа работы access, сохранит это изображение в таблицу, т.к. форма и таблица связаны. Вот... теперь попробуй разбери чего я написал :)

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 15:36

По сути получается так, что все что ты заносишь в форму, сохраняется в таблице, значит что бы сохранить в таблице рисунок, надо загрузить этот рисунок в элемент формы типа присоединенная форма объекта. Встроенными фишками можно это сделать, но это не удобно, т.к. надо добавить объект, выбрать тип объекта, найти этот объект, потом вставить. Долго! А надо нажатием кнопки на форме, которая запускает функцию открытия диал-го онка типа открыть/сохранить, выбрать файл, после чего этот файл попадет в рамку объекта.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.05.2006 (Пт) 15:51

Понял :) К сожалению привязку картинки к форме не делал. Однако вскрытие объекта BoundObjectFrame - в базе Борей именно в него выводятся картинки - выявило у него свойства OldValue и Value, содержащие байтовые массивы. Не они ли тебе нужны?
Лучший способ понять что-то самому — объяснить это другому.

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 16:12

скорее всего, сам уже нашел что value(x) там до кучи. Только бы понять что там да как, какие байты чего означают(название, служебные атрибуты файла, и само изображение).А еще jpeg он показывает как ярлык, и только при открытии его он в отдельном просмоторщике открывает рисунок, а bmp показывает прямо в форме. че за лабуда

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.05.2006 (Пт) 16:33

Ничего они сами по себе не обозначают. Value - это грубо говоря содержимое файла, а не файл. Файл может быть текстовым, звуковым, о! - графическим :D
Попробуй считать *.jpg в байтовый массив, а массив запихнуть в Value.
Picture1.Value = ReadFile("c:\temp\test.jpg")
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.05.2006 (Пт) 16:39

в олеполе в аксе хранятся всегда BMP (так как рамка объекта другие форматы не понимает)

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 16:41

знаешь что самое интересное, что если запихнуть в рамку стандартным способом и прочитать размер массива, то от на тысячи value отличается

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 16:41

нифига не получается.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.05.2006 (Пт) 16:43

У меня больше идей нет.
Лучший способ понять что-то самому — объяснить это другому.

Diman1982
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 23.05.2006 (Вт) 16:51

Сообщение Diman1982 » 26.05.2006 (Пт) 16:59

слушай а как запихнуть этот массив в файл, например jpeg|? и посмотреть получится ли его просмотреть

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.05.2006 (Пт) 17:16

еще раз повторяю, что в поле оле акцесс хранит карттиинку в своем формате. картинка типа BMP обернута в описатель. поищи на форумах по акцессу, там были примеры как вытащить из этого поля в бинарном виде рисунок и сохранить его на диск в нормальном виде

http://www.sql.ru/forum/actualtopics.aspx?bid=4


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 139

    TopList  
cron