Polytech-soft.com

ПК журнал
111 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как вставить картинку в аксессе

Работа с изображениями в Microsoft Access (97, 2000, 2003)

Возникла задача хранения (загрузка, отображение) картинок (фотографий и т.п.) в базе данных Access.

На первый взгляд опытного программиста 😉 нет ничего проще — картинки храним в поле таблицы с типом Поле объекта OLE (OLE Object), а отображаем на формах при помощи элемента управления Присоединенная рамка объекта, ну или если потребуется Свободная рамка объекта (Bound Object Frame, Unbound Object Frame). Но не тут-то было!; Оказалось, что если данные записать напрямую (в коде Visual Basic), например, используя метод AppendChunk, в поле с типом Поле объекта OLE, то в элементе управления Присоединенная рамка объекта изображение вот так вот просто не отображается. Отображается же оно только в том случае, если загрузить данные в это поле при помощи контекстного меню самого поля или указанного элемента управления, выбрав правильный тип OLE объекта (что-нибудь типа Рисунок, Picture. ). Такая гибкость и умность обработки данных не особо устраивала.

А элемент управления с манящим типом Рисунок (Image) предназначен для работы исключительно со статическими изображениями: на этапе дизайна (ну, в общем-то, и из кода Visual Basic) можно указать файл на диске, который будет отображаться на форме.

Изучив БД примеров — Northwind в английской версии, Борей в русской — и изрядно просканировав интернет, стало понятно, что отсутствие нормальной работы с изображениями в Access’е — общепризнанный факт. Вариантов предлагается два:

1. Хранение картинок в виде файлов на диске, а пути к ним — в БД. Отображение на форме при помощи элемента управления Рисунок (Image), присваивая путь в качестве значения свойству Рисунок (Picture).

2. Хранение картинок в БД в полях Поле объекта OLE (OLE Object). Аналогичное отображение на форме при помощи элемента управления Рисунок (Image). При этом для загрузки файла используется метод AppendChunk, а чтобы отобразить картинку данные выгружаются во временный файл методом GetChunk, путь к полученному файлу присваивается свойству Рисунок (Picture) элемента управления. Этот метод дан с примером здесь.

Минус первого метода в том, что при перемещении каталога хранения файлов должны быть в обязательном порядке корректно изменены пути к файлам, сохраненные в БД. Минусы второго метода — нужно придумать как добиться уникальности имени временного файла (так как теоретически с БД могут работать несколько пользователей «из одного и того же места»), и прямая работа с файлами на диске всё-таки замедляет работу. И оба этих метода не подходят для использования в Ленточной форме (Continuous Forms), а только в Одиночной форме (Single Form).

Уже склонившись ко 2-ому варианту, как более приемлемому, промелькнула мысль — а не попробовать ли использовать элемент управления Рисунок (Image) не только для отображения, но и для преобразования данных в нужный графический формат, использовав свойство PictureData объекта Image?! И это сработало! Не нужны никакие временные файлы (хотя, конечно для Ленточной формы это всё равно не подходит, но это и не критично).

Итак, идея в том, что загрузка файла осуществляется присвоением пути к нему свойству Picture элемента управления Рисунок (Image), и последующим считыванием данных из свойства PictureData — таким образом мы добиваемся, что данные буду сохранены в формате, который Access гарантированно отобразит. А отображение картинки выполняется считыванием данных из поля с типом Поле объекта OLE (OLE Object) и их присвоением свойству PictureData элемента управления.

Читать еще:  Майкрософт аксесс это

Пример.

Пусть у нас в таблице MyTable есть поле MyImage типа Поле объекта OLE (OLE Object). На форме MyForm нам нужен элемент управления Рисунок (Image)MyPic. При этом, чтобы разместить этот элемент управления на форме, нужно обязательно выбрать рисунок, а потом в дизайнере в свойстве Рисунок (Picture) указать (отсутствует) ((none)) — со скобками. На вопрос об удалении рисунка — ответить утвердительно.

Загрузку можно выполнить примерно так:

‘====================================================
Dim rs As Recordset
Dim dlgFile As FileDialog, strFilePath As String

Добавление фонового рисунка в формы Access

Добавление фонового рисунка в формы Access

Для добавления в форму Access фонового рисунка, например в главную кнопочную форму, необходимо запустить базу данных («Успеваемость студентов» с главной кнопочной формой) и на панели инструментов щелкнуть на кнопке Окно базы данных. Откроется Окно базы данных Access, в котором откройте кнопочную форму Access в режиме Конструктор.

Чтобы добавить фоновый рисунок в форму Access необходимо открыть диалоговое окно Свойства кнопочной формы, которое можно открыть несколькими способами. Рассмотрим один из способов: откройте окно Свойства, щелкнув правой кнопкой мыши на кнопочной форме, и в контекстном меню выберите команду Свойства. Откроется окно Рисунок: Picture на вкладке Макет.

Для ввода пути и имени рисунка требуется щелкнуть на кнопке обзора , откроется окно диалога Выбор рисунка. В этом окне надо указать имя и тип файла. По умолчанию Microsoft Office Access поддерживает форматы файлов .bmp, .dib, .wmf, .emf и .ico. Поэтому выберите рисунок с одним из указанных расширений и щелкните на кнопке ОК в окне диалога Выбор рисунка. Я выбрал расширение рисунка -.bmp.

Далее в окне Рисунок: Picture укажите тип рисунка, он может быть внедренным или связанным. Основные различия между связыванием и внедрением (встраиванием) заключаются в месте хранения данных и способе обновления данных после помещения их в документ. Внедренный рисунок является неотъемлемой частью формы Access, т.е. будет храниться в базе данных, увеличивая ее объем.

Связанный объект – это данные (объект), созданные в одном файле и вставленные в другой файл с поддержкой связи между файлами. Связанный объект не является частью файла, в который он вставлен, а хранится в исходном файле в одной из директорий ПК, не увеличивая объем базы данных. Если рисунок или логотип фирмы необходимо разместить на каждой форме и в отчетах, то в этом случае целесообразно вставлять рисунок в виде связанного объекта.

Я выбрал внедренный рисунок, так как он является неотъемлемой часть БД Access, что обеспечивает копирование (скачивание) файла БД с сайта пользователями Интернет.

Следующий шаг — это установка размеров рисунка. Масштабы рисунка имеют следующие значения:

  • Фрагмент;
  • Вписать в рамку;
  • По размеру рамки.

В зависимости от цели выбирайте одно из значений. В кнопочной форме Access Успеваемость_студентов я выбрал масштаб рисунка — Фрагмент, выравнивание — По центру, результат представлен на рисунке

После закрытия окон «Рисунок: Picture» и «Кнопочная форма: форма», дважды щелкните на кнопке «Кнопочная форма», откроется следующая Главная кнопочная форма Access с фоновым рисунком.

Вставка рисунков, фотографий и логотипов в формы или отчеты помогает улучшить их внешний вид и придает индивидуальность базе данных Access.

Читать еще:  Коды запросов в аксессе

Copyright

© Обучение в интернет, .
Обратная связь

Вставка рисунков(файлов) в Access

Как практически реализовывается вставка рисунков или файлов в Access 2003,
С возможностью их просмотра.

Буду благодарен за любую информацию.

17.06.2010, 16:44

Вставка рисунков(файлов) в Access
Добрый день всем участникам форума! Нид Хелп! Нужно прикрепить к записи картинки. Без ОЛЕ, без.

Вставка рисунков
Для добавления рисунка, изменяющегося в записях, есть в родном хэлпе 2003-го пошаговое описание.

Вывод по кнопке текстовых файлов и рисунков
Пишу курсовую, подскажите пожалуйста один момент, как сделать так чтобы при нажатии на кнопку.

Импорт офисных файлов в таблицы Access через VBA (БД почтовых файлов)
помогите пожалуйста как работать с файлам в Access. основные поля и форму сделал, таблицу тоже.

17.06.2010, 16:59217.06.2010, 17:27 [ТС]3

2003, я писал выше.

17.06.2010, 17:534

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


Хранение изображений в базе данных Access

В настоящее время есть 5 методов хранения информации в БД.

1) Хранение как объектов OLE.
Недостатки — большой обьем, необходимость установки набора соответствующих приложений.
Достоинство — простота использования
Пример: учебная база «Борей»
В начале используют все. Потом в зависимости от поставленных задач. И от количества и объема рисунков.

2) Хранение в двоичном формате DIB в поле объектов OLE.
Недостатки — большой обьем, необходимость писать дополнительный код для выполнения загрузки рисунков в БД (но код не слишком сложный, есть типовые наработки).
Достоинство — быстрота вывода рисунков.
Используется редко т.к. по сравнению с первым способом объем базы не уменьшается, а сложности при программировании растут.

3) Хранение в сжатом двоичном формате DIB в поле объектов OLE.
Недостатки — необходимо использовать или разрабатывать самому системы архивации данных, дополнительный код.
Достоинство — меньший объем БД по сравнению с двумя первыми способами.
Пример: sd_Foto.zip с использованием библиотеки zlib.dll. или sd_dbFoto3_97.zip
библиотека zlib.dll для Win2000 Pro и WinXP: zlib123dll.zip

4) Хранение файлов в формате JPG и GIF в поле объектов OLE и загрузка их в элемент управления Image (рисунок) через временный файл.
Недостатки — необходимо использовать временный файл для рагрузки рисунка, увеличение времени загрузки рисунка, дополнительный код.
Достоинство — меньший объем БД по сравнению с тремя первыми способами.
Пример: pictures.rar или sd_dbFoto4_97.zip

5) Хранение в базе данных путей к рисункам в формате JPG и GIF и загрузка их в элемент управления Image (рисунок).
Недостатки — необходимо следить за целостностью набора рисунков, увеличение времени загрузки рисунка, дополнительный код.
Достоинство — самый маленький объем БД по сравнению с четырьмя первыми способами.
Пример: sd_dbFoto5_97.ZIP

18.06.2010, 15:38 [ТС]510.05.2011, 12:066

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

Читать еще:  Отчеты в аксесс


Хранение изображений в базе данных Access

В настоящее время есть 5 методов хранения информации в БД.

1) Хранение как объектов OLE.
Недостатки — большой обьем, необходимость установки набора соответствующих приложений.
Достоинство — простота использования
Пример: учебная база «Борей»
В начале используют все. Потом в зависимости от поставленных задач. И от количества и объема рисунков.

2) Хранение в двоичном формате DIB в поле объектов OLE.
Недостатки — большой обьем, необходимость писать дополнительный код для выполнения загрузки рисунков в БД (но код не слишком сложный, есть типовые наработки).
Достоинство — быстрота вывода рисунков.
Используется редко т.к. по сравнению с первым способом объем базы не уменьшается, а сложности при программировании растут.

3) Хранение в сжатом двоичном формате DIB в поле объектов OLE.
Недостатки — необходимо использовать или разрабатывать самому системы архивации данных, дополнительный код.
Достоинство — меньший объем БД по сравнению с двумя первыми способами.
Пример: sd_Foto.zip с использованием библиотеки zlib.dll. или sd_dbFoto3_97.zip
библиотека zlib.dll для Win2000 Pro и WinXP: zlib123dll.zip

4) Хранение файлов в формате JPG и GIF в поле объектов OLE и загрузка их в элемент управления Image (рисунок) через временный файл.
Недостатки — необходимо использовать временный файл для рагрузки рисунка, увеличение времени загрузки рисунка, дополнительный код.
Достоинство — меньший объем БД по сравнению с тремя первыми способами.
Пример: pictures.rar или sd_dbFoto4_97.zip

5) Хранение в базе данных путей к рисункам в формате JPG и GIF и загрузка их в элемент управления Image (рисунок).
Недостатки — необходимо следить за целостностью набора рисунков, увеличение времени загрузки рисунка, дополнительный код.
Достоинство — самый маленький объем БД по сравнению с четырьмя первыми способами.
Пример: sd_dbFoto5_97.ZIP

10.05.2011, 14:127

. слышен голос из прекрасного далекааа.
итак, подымаем тему тысячелетней давности.
Мне в какой то момент времени позарез понадобилось хранить рисунки,документы, фотографии в БД.

Долго смотрел, анализировал, решил графику и доки в БД не хранить. Организовал работу следующим образом:

При создании какой либо уникальной записи в БД, автоматически создается папка по определенному пути на файловом сервере. Открыть эту папку можно за дли секунды, нажав к примеру два раза на определенном поле. Таким образом БД не захламляется лишним объемом картинок и рисунков,документов итд. А ссылка при нажатии поля открывает папку на обычном файловом сервере по определенному пути. Я так думаю, что это во многом идеальный вариант.
При сетевой БД, имею в виду если база висит в интернете, наверное доступ документов организовать тоже через FTP сервер лучше. то есть при необходимости посмотреть документы, открывается папка на FTP сервере, в которой уже и лежат нужные картинки,доки, и все остальное.
Это мое мнение. Со всякими BLOBами и OLE я не копал дальше, после того как определил для себя оптимальный вариант.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector