Access пишет названия файлов вместо картинок

Обновлено: 05.07.2024

В Microsoft Access существует возможность вставки рисунков в формы и отчеты. Использование рисунков может улучшить внешний вид создаваемых форм и отчетов. Например, в отчеты можно включать логотип фирмы, а в форме предоставлять возможность просмотра не только данных о сотрудниках фирмы, но и их фотографий. Для вставки рисунков в формы и отчеты используются специальные элементы управления — свободная и присоединенная рамки объектов (Unbound Object Frame, Bound Object Frame), а также элемент управления Рисунок (Image).

Способ вставки рисунка зависит от того, как предполагается его использовать.

  • Объект OLE можно хранить в одном из полей таблицы Access, например в таблице "Сотрудники" (Employee) базы данных "Борей" хранятся фотографии сотрудников. Можно в полях таблицы Access хранить также документы Word. В таком случае для отображения этих объектов в формах или отчетах следует использовать элемент управления Присоединенная рамка объекта (Bound Object Frame).
  • Объекты OLE могут храниться не в таблицах Access, а прямо в форме или отчете. С помощью такого способа в форме или отчете можно, например, сохранить логотип фирмы. В этом случае для отображения объекта OLE следует использовать элемент управления Свободная рамка объекта (Unbound Object Frame) или Рисунок (Image).
  • Можно также для добавления рисунка в форму или отчет использовать свойство Рисунок (Picture) этой формы или отчета. Обычно так поступают, когда требуется включить фоновый рисунок (подложку), занимающий часть окна или все окно формы или отчета.

Чтобы добавить фоновый рисунок в форму:

  1. Откройте форму в режиме Конструктора.
  2. В окне свойств формы на вкладке Макет (Format) найдите свойство Рисунок (Picture). В поле ввода этого свойства введите путь и имя файла рисунка. Для этого можно нажать кнопку Построителя и выбрать в окне Выбор рисунка (Insert Picture) необходимый файл рисунка (рис. 15.1).

Замечание

Несколько стандартных файлов для фоновых рисунков находятся в папке MICROSOFT OFFICE\OFFICE\BITMAPS\STYLES.

  1. Установите значение свойства Тип рисунка (Picture Type). Значений может быть два: Внедренный (Embedded) или Связанный (Linked). Если рисунок внедренный, он сохраняется в файле базы данных (mdb). Связанный рисунок хранится в отдельном файле на диске. О преимуществах и недостатках того и другого способа мы уже говорили выше. Если один и тот же рисунок вставляется во много форм или отчетов, то внедрение его приведет к "распуханию" файла mdb, т. к. храниться будет столько копий рисунка, сколько раз вы его внедряли. Если вы решите сделать его связанным, необходимо заботиться о том, чтобы его случайно не удалили или не переместили.
  2. С помощью следующих свойств настройте отображение фонового рисунка.
    • Свойство Масштабы рисунка (Picture Size Mode) имеет три значения: Фрагмент (Clip), Вписать в рамку (Stretch), По размеру рамки (Zoom). Значение Фрагмент отображает рисунок в его исходном размере. Если размер рисунка превышает размер окна формы, то изображение рисунка обрезается. Значение Вписать в рамку изменяет размер рисунка так, чтобы он соответствовал окну формы. Использование данного значения может привести к искажению изображения рисунка. Значение По размеру рамки изменяет размер рисунка так, чтобы он соответствовал окну формы либо по ширине, либо по высоте. Использование данного значения не приведет ни к обрезанию рисунка, ни к искажению его пропорций.

Рис. 15.1. Диалоговое окно Выбор рисунка

    • Если вставляется рисунок, занимающий не всю форму, свойство Выравнивание рисунка (Picture Alignment) позволяет определить положение его в форме: Сверху слева (Top Left), Сверху справа (Top Right), По центру (Center), Снизу слева (Bottom Left), Снизу справа (Bottom Right), По центру формы (Form Center).
    • Свойство Мозаичное заполнение (Picture Tiling) позволяет выводить повторяющееся изображение рисунка.

    Пример использования рисунка в качестве фона в форме приведен на рис. 15.2.

    Аналогично вставляется фоновый рисунок в отчет. Пример использования рисунка в качестве фона в отчете приведен на рис. 15.3.

    Рисунок может быть вставлен в форму и в виде элемента управления формы. Для этого можно использовать два типа элементов управления: Рисунок (Image) и Свободная рамка объекта (Unbound Object Frame).

    Рис. 15.2. Использование фонового рисунка в форме Microsoft Access

    Рис. 15.3. Фоновый рисунок в отчете Microsoft Access

    Если не требуется прямое изменение рисунка в форме или отчете, то лучше использовать Рисунок (Picture) (форма будет работать быстрее). Если же предполагается часто изменять рисунок, нужно вставить его с помощью свободной рамки объекта.

    Чтобы вставить элемент управления Рисунок (Image), необходимо:

    1. Открыть форму в режиме Конструктора формы или отчет в режиме Конструктора отчета.
    2. Нажать кнопку Рисунок (Image) на панели элементов (кнопка Мастера элементов должна быть нажата, чтобы запустился Мастер рисунков).
    3. Выбрать в форме или отчете место, в которое помещается рисунок, и щелкнуть на нем левой кнопкой мыши.
    4. В раскрывшемся окне Вставка рисунка (Insert Picture) выбрать имя файла, содержащего добавляемый рисунок, и нажать кнопку ОК. Будет создан элемент управления, в котором помещается рисунок (рис. 15.4).
    5. Установить значения свойств, которые влияют на то, как рисунок будет отображаться в форме или отчете. Эти свойства аналогичны соответствующим свойствам формы.

    Рис. 15.4. Использование элемента Рисунок для вставки рисунка в форму

    Чтобы вставить рисунок в форму или отчет с помощью свободной рамки объекта, необходимо:

    1. Открыть форму в режиме Конструктора формы или отчет в режиме Конструктора отчета.
    2. Нажать кнопку Свободная рамка объекта (Unbound Object Frame) на панели элементов.
    3. Выбрать в форме или отчете место для вставляемого объекта и щелкнуть на нем левой кнопкой мыши. Появится диалоговое окно мастера Вставка объекта (Insert Object). С помощью мастера можно вставить уже готовый рисунок из файла или сначала создать его в соответствующем приложении, а затем вставить. Поэтому дальнейшие шаги могут быть разными.

    Если вам еще предстоит создать рисунок, проделайте следующие операции.

    1. В диалоговом окне Microsoft Access выбрать переключатель Создать новый (Create New), а затем в списке Тип объекта (Object Type) выбрать приложение, с помощью которого будет создаваться рисунок (рис. 15.5).

    Рис. 15.5. Окно Microsoft Access, используемое для вставки рисунка с помощью свободной рамки объекта

    1. Объект может отображаться в виде значка — это удобно, когда он содержит сведения, которые не должны все время выводиться на экран. В таком случае нужно просто установить флажок В виде значка (Display as Icon).
    2. Нажать кнопку ОК.
    3. Создать объект с помощью приложения, выбранного на шаге 1.
    4. Закончив создание объекта, выбрать команду Закрыть (Close) в меню Файл (File) приложения, чтобы вернуться в Microsoft Access. Microsoft Access создает элемент управления Свободная рамка объекта (Unbound Object Frame) и отображает в ней рисунок.

    Если же файл с рисунком у вас уже готов, чтобы вставить его прямо из файла, вам необходимо:

    1. В диалоговом окне Microsoft Access выбрать переключатель Создать из файла (Create From File), а затем указать путь к файлу. Если точный путь вы не знаете, используйте кнопку Обзор (Browse) (рис. 15.6).

    Рис. 15.6. Окно Microsoft Access при вставке рисунка из файла в отчет с помощью свободной рамки объекта

    Рис. 15.7. Вставка рисунка Microsoft Paint в отчет с помощью свободной рамки объекта

    1. Если нужно отобразить объект в виде значка, установить флажок В виде значка (Display As Icon).
    2. Для нахождения связи с объектом установить флажок Связь (Link). Если флажок сброшен (по умолчанию), объект будет внедрен.
    3. Нажать кнопку ОК.

    Пример вставки рисунка, созданного с использованием Microsoft Paint, в форму с помощью свободной рамки объекта приведен на рис. 15.7.

    После вставки объекта можно изменять его размеры и пропорции с помощью свойства Установка размеров (Size Mode). В большинстве случаев изменения в свободный объект могут вноситься в режиме Конструктора формы или отчета. Для того чтобы иметь возможность изменять объект в режиме формы, необходимо задать для свойства Доступ (Enabled) свободной рамки объекта значение Да (Yes), а для свойства Блокировка (Locked) — значение Нет (No). Чтобы отредактировать объект, дважды щелкните на нем мышью. Для этого только необходимо, чтобы на вашем компьютере было установлено приложение, в котором может редактироваться файл данного типа. Пример редактирования внедренного точечного рисунка представлен на рис. 15.8.

    Рис. 15.8. Пример редактирования точечного рисунка с помощью Microsoft Paint

    Для того чтобы выйти из режима редактирования, достаточно щелкнуть мышью за пределами рисунка.

    В отличие от других элементов управления в форме, которые связаны с записями в таблице-источнике, рисунок в свободной рамке объекта не меняется при перемещении по записям в форме — он связан с самой формой, а не с данными, которые отображаются в форме. Рисунки, которые хранятся в записях таблицы, отображаются в форме с помощью присоединенной рамки объекта.

    Для хранения рисунков и других объектов OLE в таблицах Access используется специальный тип поля: Объект OLE (OLE Object). Элемент управления Присоединенная рамка объекта (Bound Object Frame) создается одним из стандартных способов:

    • перемещением с помощью мыши нужного поля из списка полей таблицы-источника. В этом случае будет сразу создан элемент управления, связанный с полем в таблице;
    • с помощью кнопки Присоединенная рамка объекта (Bound Object Frame) на панели элементов. В данном случае будет создан элемент управления, для которого нужно сразу установить свойство Данные (RecordSource) — имя поля, содержащего объект OLE (рис. 15.9).

    Рис. 15.9. Создание присоединенной рамки объекта в режиме Формы

    Вставить рисунок в поле таблицы можно как в таблице, открытой в режиме Таблицы, так и в форме. Для этого нужно:

    1. Открыть таблицу в режиме Таблицы или форму в режиме Формы.
    2. Перейти на запись, в которую требуется вставить рисунок, и выбрать поле объекта OLE.
    3. Выполнить команду Объект (Object) из меню Вставка (Insert).
    4. В диалоговом окне Microsoft Access (см. рис. 15.5) выбрать переключатель Создать новый (Create New), а затем в списке Тип объекта (Object Type) выбрать тип приложения, в котором будет создаваться объект. Если файл с рисунком уже готов, то нужно выбрать переключатель Создать из файла (Create From File), a затем указать путь к файлу.
    5. Для того чтобы отобразить объект в виде значка, установить флажок В виде значка (Display As Icon).
    6. Нажать кнопку ОК.
    7. Если вы создаете новый рисунок, то нужно создать его с помощью приложения выбранного на шаге 4.
    8. Закончив создание объекта, выбрать команду Закрыть (Close) в меню Файл (File) приложения для возвращения в Microsoft Access.

    Рисунок будет вставлен в запись в таблице. При этом в режиме Формы рисунок или иной объект автоматически будут отображаться на экране. В режиме Таблицы будет отображаться только тип объекта, например Растровый рисунок.

    Вставка графических файлов происходит либо напрямую, либо при помощи отдельных графических фильтров. Эти фильтры устанавливаются при инсталляции Microsoft Access. Для вставки файлов формата Enhanced Metafile (EMF), точечных рисунков Windows (BMP, RLE, DIB), метафайлов Windows (WMF) и значков (ICO) графический фильтр не требуется. Однако такие фильтры необходимы для вставки всех остальных файлов графических.форматов, перечисленных ниже:

    AutoCAD Format 2-D (DXF) Computer Graphics Metafile (CGM)

    CorelDRAW (CDR) Encapsulated PostScript (EPS)

    Graphics Interchange Format (GIF) JPEG File Interchange Format (JPG)

    Kodak Photo CD (PCD) Micrografx Designer/Draw (DRW)

    PC Paintbrush (PCX) Portable Network Graphics (PNG)

    Tagged Image File Format (TIFF) Targa (TGA)

    WordPerfect Graphics (WPG) HG Graphics Language (HGL, PLT) Macintosh PICT (PCT)

    При добавлении GIF-файлов, JPEG и других распространенных типов файлов изображений в поле "Объект OLE" в таблице Access в таблице Access используется слово "Пакет", а не ожидаемое "Тостовая карта".

    В этом поле отображается слово "Пакет", так как поле "Объект OLE" поддерживает только тобит-файлы Windows (BMP) и Device Independent Bitmap (DIB). Если вы хотите хранить дополнительные типы графических файлов в поле "Объект OLE" и правильно отображать их в Access, необходимо установить дополнительное программное обеспечение, которое должно предоставлять компоненты (серверы OLE),необходимые для отображения дополнительных типов изображений.

    В предыдущих Microsoft Office предоставлялась программа "Редактор фотографий (Майкрософт)", которая, в свою очередь, предоставляла сервер OLE для отрисовки GIF- и JPEG-файлов. Система Office 2003 заменила редактор фотографий на Microsoft Picture Manager, который не обеспечивает нужный OLE-сервер для файлов таких типов.

    Обойти эту проблему можно одним из следующих способов:

    Храните изображения за пределами базы данных и используйте Visual Basic® для их отображения с помощью кода VBA. Дополнительные сведения см. в статье базы знаний Майкрософт "Отображение изображений из папки в форме, отчете или на странице доступа к данным".

    Преобразуйте изображения в формате GIF или JPEG в файлы ток-карты Windows (BMP). Несмотря на то, что размер BMP-файлов обычно больше GIF- или JPEG-файлов, они помогают уменьшить размер базы данных, так как Access не создает для них дополнительные файлы DIB. Сведения о том, почему Access создает файлы DIB при использовании giF- или JPEG-изображений, см. в статье базы знаний Майкрософт "Причины роста баз данных объектами OLE".

    Дополнительные сведения

    Дополнительные сведения об использовании изображений в Access см. в указанных ниже статьях.

    ACC. Причины, по которым объекты OLE вызывают рост, объясняется, почему хранение GIF- и JPEG-изображений в поле "Объект OLE" может быстро увеличивать размер базы данных.

    Чтобы сохранить файл точего рисунка в качестве объекта OLE в поле "Объект Access OLE", объясняется, как использовать код VBA для хранения файлов изображений в поле "Объект OLE" и автоматического запуска правильного контейнера и отображения этих файлов.

    В этой статье описана проблема, возникающая при открытии базы данных, созданной с помощью классов Access 2000 и MFC в Visual C++.

    Решения для исправления ошибок «нераспознанного формата базы данных»

    Способ 1: использовать опцию авторемонта

    Кроме того, вы также можете обратиться к нашему руководству по устранению проблем с повреждением файлов Microsoft Access. Надеемся, что некоторые исправления, перечисленные в этом руководстве, подойдут вам.

    Способ 2: редактировать столбцы с именами больше 32 символов

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

    Способ 3: преобразовать базу данных в формат файла .accdb

    Третье исправление заключается в преобразовании вашей базы данных в формат accdb . Однако для использования этого исправления необходим Microsoft Access 2010. Просто откройте проблемные файлы, и MS Access 2010 автоматически преобразует соответствующие файлы в расширение .accdb.

    Способ 4: удалить последние обновления

    Если эта проблема появилась вскоре после установки последних обновлений Windows, удалите соответствующие исправления и проверьте, сохраняется ли проблема. Иногда новые обновления Windows 10 могут вызывать различные технические проблемы. Например, Windows 7 KB4480970, как известно, вызывает эту ошибку.

    Самым простым решением для исправления этой ошибки является удаление проблемных обновлений.

    Если вы сталкивались с другими решениями для исправления нераспознанных ошибок в базе данных, сообщите нам об этом в комментариях ниже.

    Проблемы

    Неизвестный формат базы данных.

    Повреждение или утеря файлов базы данных

    Несмотря на все достоинства приложения, повреждение или утеря базы данных Access достаточно большого размера, является серьёзной проблемой. Даже в случае хранения баз данных на серверах или RAID массивах, повреждение или утеря данных может произойти в любой момент, в результате чего будет утерян доступ к важным данным.

    Наиболее распространёнными причинами утери базы данных есть:

    • Сбой или ошибка аппаратного обеспечения
    • Конфликт программного обеспечения
    • Случайное удаление файла или форматирование носителя информации
    • Повреждение файла базы данных (чаще с файлами базы данных большого размера)
    • Восстановление базы данных с неактуальной версии резервной копии, и т.д.

    Решение проблем в _Access — не устанавливается? Не запускается? Тормозит? Вылетает? Лагает? Ошибка? Не загружается?

    К сожалению, в играх бывают изъяны: тормоза, низкий FPS, вылеты, зависания, баги и другие мелкие и не очень ошибки. Нередко проблемы начинаются еще до начала игры, когда она не устанавливается, не загружается или даже не скачивается. Да и сам компьютер иногда чудит, и тогда в _Access вместо картинки черный экран, не работает управление, не слышно звук или что-нибудь еще.

    Причина

    Не удается найти приложения Outlook, Access и Publisher на новом компьютере с предустановленным пакетом Office

    При покупке нового компьютера, где уже установлен Office, вы можете заметить отсутствие Outlook, Access и Publisher. Для начала попробуйте выполнить действия, описанные в статье Поиск приложений Office в Windows 10, Windows 8 и Windows 7, чтобы убедиться, что эти приложения действительно отсутствуют.

    Если вам по-прежнему не удается найти Outlook, Access и Publisher, выполните указанные ниже действия.

    Тему читают: 1 гость

    Решение проблемы




    После этого, перезапускаем Access и проверяем, пропала ли ошибка при открытии и стали ли доступны ранее нерабочие функции.

    Решение

    В настоящее время не существует решения для использования AppWizard с источниками данных Access 2000. Чтобы приложение использовало версию 3,6 DAO, необходимо обновить версию MFC во время выполнения до MFC версии 6,01. Это зависит от того, строится ли приложение для использования библиотеки DLL MFC или для построения со статическими библиотеками для MFC. При связывании с библиотекой DLL MFC вы можете указать, что вы хотите использовать MFC для использования DAO 3,6, вставив следующую строку кода перед открытием базы данных Access 2000:

    Вставьте эту строку в функцию CYourApp:: InitInstance () программы. Если вы собираетесь использовать статические библиотеки MFC, выполните указанные ниже действия, чтобы получить статические сборки MFC для использования DAO 3,6:

    Измените файл Daocore. cpp в каталоге SRC библиотеки MFC. Вы получите следующее примечание:

    // Determine whether to use DAO 3.6, 3.5, or 3.0// Use DAO 3.0 if DLL build and not built with MFC 4.21 or later// Use DAO 3.6 if MFC 6.01 or later// otherwise, DAO 3.5

    Добавьте следующие строки:

    Перестройте библиотеку для нужного варианта. Например, чтобы создать статическую библиотеку MFC (отладочную версию, а не Юникод) без файлов браузера, в командной строке в папке MFCSRC введите следующую команду:

    Примечание. Необходимо убедиться в том, что средства компилятора находятся в пути. В противном случае, возможно, потребуется запустить файл vcvars32. bat, расположенный в папке Visual C++ BIN. Также обратите внимание на то, что при создании новых версий библиотек они будут скопированы в верхней части существующих в папке MFCLIB, поэтому вам может понадобиться сохранить старые из них.

    Состояние

    Одновременное открытие нескольких баз данных

    В одном экземпляре Access одновременно может быть открыта только одна база данных. Другими словами, не удается запустить Access, открыть одну базу данных, а затем открыть другую базу данных, не закрывая первую базу данных. Однако можно одновременно запустить несколько экземпляров Access, каждый из которых будет открывать базу данных. Каждый раз, когда вы запускаете Access, вы открываете новый экземпляр. Например, чтобы открыть две базы данных Access одновременно, запустите Access и откройте первую базу данных Access, а затем запустите новый экземпляр Access и откройте вторую базу данных.

    Примечание: Количество экземпляров Access, которые можно запускать одновременно, ограничено объемом доступной памяти. Объем доступной памяти зависит от объема ОПЕРАТИВной памяти компьютера и объема памяти, используемой другими программами, запущенными в данный момент.

    Каждый экземпляр Access выполняется в отдельном окне. Если у вас несколько экземпляров Access, и вы хотите просмотреть их одновременно, вы можете разбить окна на плитки.

    Возникла задача хранения (загрузка, отображение) картинок (фотографий и т.п.) в базе данных 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

    Читайте также: