Microsoft Access

Создание запроса

Часто запросы в Microsoft Access создаются автоматически, и пользователю не приходится самостоятельно их создавать. 

·	Для создания запроса, являющегося основой формы или отчета, попытайтесь использовать мастер форм или мастер отчетов. Они служат для создания форм и отчетов. Если отчет или форма основаны на нескольких таблицах, то с помощью мастера также создаются их базовые инструкции SQL. При желании инструкции SQL можно сохранить в качестве запроса.

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

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

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

Запросы на выборку и их использование

Наиболее часто используемым запросом является запрос на выборку. Запрос на выборку возвращает данные из одной или нескольких таблиц, а также результаты, которые при желании пользователь может изменить (с некоторыми ограничениями). Также можно использовать запрос на выборку, чтобы сгруппировать записи для вычисления сумм, средних значений, пересчета и других действий. Для получения примеров запросов на выборку нажмите кнопку . Для получения дополнительных сведений о создании запросов нажмите кнопку  .

Запросы на изменение и их использование

Запрос на изменение - это запрос, который за одну операцию вносит изменения в несколько записей. Существует четыре типа запросов на изменение: на удаление, на обновление и добавление записей, а также на создание таблицы.

Запрос на удаление

Удаляет группу записей из одной или нескольких таблиц. Например, запрос на удаление позволяет удалить записи о товарах, поставки которых прекращены или на которые нет заказов. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.

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

Запрос на обновление записей

Вносит общие изменения в группу записей одной или нескольких таблиц. Например, на 10 процентов поднимаются цены на все молочные продукты или на 5 процентов увеличивается зарплата сотрудников определенной категории. Запрос на обновление записей позволяет изменять данные в существующих таблицах.

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

Запрос на добавление

Добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц. Например, появилось несколько новых клиентов, а также база данных, содержащая сведения о них. Чтобы не вводить все данные вручную, их можно добавить в таблицу «Клиенты». Запрос на добавление также полезен при выполнении следующих действий.

·	Добавление полей на основе условий отбора. Например, необходимо добавить имена и адреса клиентов с очень крупными заказами.

·	Добавление записей, если некоторые поля из одной таблицы не существуют в другой. Например, в демонстрационной базе данных «Борей» таблица «Клиенты» содержит 11 полей. Пусть требуется добавить записи из другой таблицы с полями, соответствующими 9 из 11 полям таблицы «Клиенты». Запрос на добавление добавит данные в совпадающие поля и пропустит остальные.

Запрос на создание таблицы

Создает новую таблицу на основе всех или части данных из одной или нескольких таблиц. Запрос на создание таблицы полезен для выполнения следующих действий.

·	Создание таблицы для экспорта в другую базу данных Microsoft Access. Например, требуется создать таблицу, содержащую несколько полей из таблицы «Сотрудники», а затем экспортировать эту таблицу в базу данных, используемую отделом кадров.

·	Создание отчетов, содержащих данные, соответствующие определенному моменту времени. Например, 15 мая 96 года необходимо напечатать отчет об объеме продаж, сделанных в первом квартале, основанный на данных, содержащихся в базовой таблице на 9:00 A.M. 1 апреля 96. Отчет, основанный на запросе или инструкции SQL, выбирает из таблиц самые последние данные (данные на 15 мая 96), а не записи на указанный момент времени. Чтобы получить данные на 9:00 A.M. 1 апреля 96 , необходимо разработать запрос на создание таблицы, в котором требуемые записи отбираются в зависимости от указанного момента времени и помещаются в новую таблицу. Затем в качестве основы для отчета следует использовать эту таблицу, а не запрос. 

·	Создание резервной копии таблицы.

·	Создание архивной таблицы, содержащей старые записи. Например, можно создать таблицу, сохраняющую все старые заказы, прежде чем удалить их из текущей таблицы «Заказы».

·	Повышение быстродействия форм и отчетов, базирующихся на многотабличных запросах или инструкциях SQL. Например, требуется вывести на печать несколько отчетов, базирующихся на запросе, включающем пять таблиц, в котором рассчитываются общие итоги. Чтобы ускорить процесс, разработайте запрос на создание таблицы, извлекающий необходимые записи и сохраняющий их в одной таблице. Затем на базе этой таблицы создайте отчет или укажите ее в инструкции SQL как источник записей для формы или отчета. Это позволит обойтись без повторных запусков запроса для каждого отчета. Однако следует помнить, что после выполнения запроса на создание таблицы данные в этой таблице не изменяются.

Параметрические и перекрестные запросы 

В перекрестном запросе отображаются результаты статистических расчетов (такие как суммы, количество записей и средние значения), выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в левом столбце таблицы, а второй - в верхней строке. Для получения примера перекрестного запроса нажмите кнопку  . Для получения дополнительных сведений о создании перекрестного запроса с помощью мастера нажмите кнопку  . Для получения дополнительных сведений о самостоятельном создании перекрестного запроса нажмите кнопку  .

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

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

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

Можно создать специальную форму или диалоговое окно, которое вместо диалогового окна запроса с параметрами будет выводить приглашение на ввод параметров запроса.

Запросы SQL и их использование

Запрос SQL - это запрос, создаваемый при помощи инструкций SQL. Примерами запросов SQL могут служить запросы на объединение, запросы к серверу, перекрестные и подчиненные запросы.

Запрос на объединение

Этот тип запроса комбинирует поля (столбцы) из одной или нескольких таблиц или запросов в одно поле в результатах запроса. Например, если шесть поставщиков ежемесячно посылают новые списки оборудования, то с помощью запроса на объединение эти списки можно объединить в один. А затем результаты поместить в новую таблицу, созданную с помощью запроса на создание таблицы, основанного на запросе на объединение. Для получения примеров запросов на объединение нажмите кнопку  .

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

Запрос к серверу

Этот тип запроса отправляет команды непосредственно в базы данных ODBC, например Microsoft SQL, причем используются только команды, поддерживаемые сервером. Например, запрос к серверу используется для возвращения или изменения данных.

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

Управляющий запрос

Данный тип запроса создает или вносит изменения в объекты базы данных, такие как таблицы Microsoft Access или Microsoft SQL Server.

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

Подчиненный запрос

Этот тип запроса состоит из вложенной в запрос на выборку или запрос на изменение инструкцию SQL SELECT. Чтобы определить новое поле, данную инструкцию можно ввести о строку Поле в бланке запроса. Чтобы указать для данного поля условие отбора, введите инструкцию в строку Условие отбора. Подчиненные запросы используются для:

·	проверки наличия результатов подчиненного запроса (используются зарезервированные слова EXISTS или NOT EXISTS); 

·	поиска значений в основном запросе, которые равны, превышают или меньше значений, возвращаемых подчиненным запросом (используются зарезервированные слова  ANY, IN или ALL);

·	создания подчиненных запросов внутри подчиненных запросов (вложенные запросы).

Создание формы

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

Для создания простой формы, содержащей один столбец, используется кнопка Новый объект.

Предполагаемые действия

Создание простой формы с помощью кнопки Новый объект

	Создание формы с помощью мастера

	Создание формы без помощи мастера

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

	Создание формы из записей, отфильтрованных в таблице, запросе или другой форме

Создание отчета

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

Предполагаемые действия

Создание отчета из одной колонки с помощью автоотчета

	Создание отчета с помощью мастера

	Создание отчета без помощи мастера

	Создание отчета по нескольким таблицам 

Ключевые поля.

Сила реляционных баз данных, таких как Microsoft Access, заключается в том, что они могут быстро найти и связать данные из разных таблиц при помощи запросов, форм и отчетов. Для этого каждая таблица должна содержать одно или несколько полей, однозначно идентифицирующих каждую запись в таблице. Это называется ключевым полем таблицы. Если для таблицы обозначены ключевые поля, то Microsoft Access предотвращает дублирование или ввод пустых значений в ключевое поле.

В Microsoft Access можно выделить три типа ключевых полей: счетчик, простой ключ и составной ключ.

Ключевые поля счетчика

Поле счетчика можно задать таким образом, чтобы добавлении каждой записи в таблицу в это поле автоматически вносилось порядковое число. Указание такого поля в качестве ключевого является наиболее простым способом создания ключевых полей. Если до сохранения созданной таблицы ключевые поля не были определены, то при сохранении будет выдано сообщение о создании ключевого поля. При нажатии кнопки Да будет создано ключевое поле счетчика. Также таблица может быть использована при репликации базы данных. Для получения дополнительных сведений нажмите кнопку  .

Простой ключ

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

Составной ключ

В случаях, когда невозможно гарантировать уникальность значений каждого поля, существует возможность создать ключ, состоящий из нескольких полей. Чаще всего такая ситуация возникает для таблицы, используемой для связывания двух таблиц в отношении «многие-ко-многим». Примером такой таблицы может служить таблица «Заказано» из демонстрационной базы данных «Борей», связывающая таблицы «Заказы» и «Товары». Ключ в этой таблице состоит из двух полей: «КодЗаказа» и «КодТовара». В таблице «Заказано» может быть представлено много товаров и много заказов, но каждый товар включается в заказ только один раз, поэтому комбинация значений полей «КодЗаказа» и «КодТовара» достаточна для образования ключа. 

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

Примечание.   Если определить подходящий набор полей для составного ключа сложно, просто добавьте поле счетчика и сделайте его ключевым. Например, не рекомендуется определять ключ по полям «Имена» и «Фамилии», поскольку нельзя исключить повторения этой пары значений для разных людей.

Поиск данных

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

·	С помощью диалогового окна Поиск легко найти конкретные записи или определенные значения в полях. При обнаружении каждого вхождения требуемого элемента выполняется перемещение по записям. Если нужно заменить конкретные обнаруженные при поиске значения, следует воспользоваться диалоговым окном Замена.

·	Фильтры позволяют временно изолировать и просмотреть конкретный набор записей в открытой форме или в открытом объекте в режиме таблицы.

·	Запросы дают возможность работать с конкретным набором записей, которые удовлетворяют условиям, заданным для одной или нескольких таблиц базы данных. При выполнении запроса становится возможной независимая работа с этим набором записей в конкретной форме или в объекте в режиме таблицы.

Метод поиска данных

            Диалоговое окно Поиск

	Диалоговое окно Замена

	Фильтр в таблице, запросе или форме

	Запрос

Свойство Фильтр (Filter) определяет подмножество записей, выводящихся после применения фильтра к форме, запросу или таблице.

Значения

Значение свойства Фильтр (Filter) определяется строковым выражением, содержащим предложение WHERE без ключевого слова WHERE. Например, следующие инструкции Visual Basic определят фильтр, отбирающий клиентов из России:

Me.Filter = "Страна  = 'Россия'"

Me.FilterOn = True

Значение данного свойства задается в окне свойств формы или отчета, в макросе или в программе Visual Basic.

Кроме того, можно задать значение данного свойства в режиме формы или в режиме таблицы. Для этого следует выбрать в меню Записи команду Фильтр и одну из команд в подменю.

Примечание.   Значения свойства Фильтр (Filter) не оказывают влияния на свойство Filter объектов доступа к данным.

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

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

При создании нового объекта он наследует значения свойств Источник записей (RecordSource), Фильтр (Filter), Порядок сортировки (OrderBy) и Сортировка включена (OrderByOn) таблицы или запроса, на базе которых создается объект.

Для применения сохраненного фильтра к форме, запросу или таблице следует нажать кнопку Применить фильтр    на панели инструментов, выбрать в меню Записи команду Применить фильтр или задать в макросе или в программе Visual Basic для свойства Фильтр включен (FilterOn) значение True (-1). Для того чтобы применить фильтр в отчете, следует задать значение «Да» для свойства Фильтр включен в окне свойств отчета.

Кнопка Применить фильтр служит индикатором состояния свойств Фильтр (Filter) и Фильтр включен (FilterOn). Пока отсутствует фильтр, который можно применить, эта кнопка является недоступной. Если существующий фильтр уже применен, кнопка Применить фильтр выводится нажатой.

Для автоматического применения фильтра при открытии формы следует указать в свойстве события формы Открытие (OnOpen) либо макрос, содержащий макрокоманду ПрименитьФильтр (ApplyFilter), либо процедуру обработки события, в которой вызывается метод ApplyFilter объекта DoCmd.

Для снятия фильтра следует еще раз нажать нажатую кнопку Применить фильтр, выбрать в меню Записи команду Удалить фильтр или задать в программе Visual Basic для свойства Фильтр включен (FilterOn) значение False (0).

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

Если значение свойства Фильтр (Filter) задается в режиме конструктора формы, Microsoft Access не проверяет правильность выражения SQL. Если введено неверное выражение SQL, ошибка возникает при применении фильтра.

Новые характеристики фильтров

Благодаря введению двух новых способов применения фильтров, использование фильтров в Microsoft Access 97 стало более удобным и легким.

Тип фильтра	Тип поиска

Новое в Access 97

Ввод данных в фильтр	

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

Фильтр по выделенному	

Поиск всех записей, содержащих выделенное значение, если непосредственно в форме или в таблице выбрать (выделить) искомое значение, а затем нажать кнопку Фильтр по выделенному    на панели инструментов.

Исключение выделенного значения	

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

Обычный фильтр	

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

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

Кроме того, фильтры позволяют выполнять следующие операции.

Отбор записей в таблице или запросе

Для отбора записей в таблице или запросе в режиме таблицы можно использовать любой фильтр.

Сохранение фильтра вместе с таблицей, запросом или формой

При сохранении таблицы, запроса или формы также сохраняется и фильтр; однако при повторном открытии этих объектов автоматического применения этого фильтра не происходит. Фильтр применяется при необходимости. 

Создание новой формы или отчета на основе отобранных данных

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

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

Для управления фильтром и порядком сортировки, которые наследуются отчетом, используются следующие новые свойства: Фильтр (Filter), Фильтр включен (FilterOn), Порядок сортировки (OrderBy) и Сортировка включена (OrderByOn). Свойства Фильтр (Filter) и Порядок сортировки (OrderBy) также применимы к формам, таблицам и запросам, однако для их изменения вместо непосредственной установки их значений допустимо использование фильтров и сортировки.

Применение фильтра к подчиненной форме

Фильтр позволяет наложить ограничения на записи подчиненной формы, не накладывая ограничений на записи главной формы.

Управление фильтрами из программ или из макросов

Создание индекса для ускорения поиска и сортировки записей

При помощи индексов сортировка и поиск записей ускоряется. В таблицах Microsoft Access индексы используются также как и в книгах: чтобы найти данные, осуществляется их поиск в индексе. Можно создать индексы, основанные на одном или нескольких полях. Составные индексы позволяют пользователю провести различия между записями, в которых первые поля могут иметь одинаковые значения.

Выбор полей для индексирования

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

Ключевые поля таблицы индексируются автоматически. Нельзя индексировать поля с типом данных поле МЕМО, гиперссылка или объект OLE. Для остальных полей индексирование используется, если выполняются следующие условия.

·	Поле имеет текстовый, числовой, денежный тип или тип даты/времени.

·	Не нужно осуществлять поиск значений в поле.

·	Не нужно осуществлять сортировку значений в поле.

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

Составные индексы

Если предполагается, что сортировка или поиск двух и более полей одновременно будет часто выполняться, можно создать составной индекс. Например, если для одного и того же запроса часто устанавливается критерий для полей «Имя» и «Фамилия», то для этих двух полей имеет смысл создать составной индекс.

При сортировке таблицы по составному индексу сначала осуществляется сортировка по первому полю, определенному для данного индекса. Если в первом поле содержатся записи с повторяющимися значениями, то сортировка осуществляется по второму полю, определенному для данного индекса, и так далее.

Предполагаемые действия

            Определение индекса для одного поля

	Определение составного индекса

	Просмотр и редактирование индексов

Связывпание баз данных.

Внимание!   Перед тем как приступить к импорту или связыванию данных, необходимо создать или открыть базу данных Microsoft Access, в которой будут содержаться импортированные или связанные таблицы. Для получения дополнительных сведений о создании базы данных нажмите кнопку  .

Microsoft Access поддерживает импорт или связывание данных из таблиц других баз данных Microsoft Access (версий 1.x, 2.0 и 7.0/95 и 8.0/97), а также данные из других приложений и файлов других форматов, например, Microsoft Excel, dBASE, Microsoft FoxPro или Paradox. Microsoft Access также обеспечивает импортирование и связывание языковых таблиц и списков (только для чтения), которые могут находится на персональном компьютере, на сетевом сервере или на сервере Интернета.

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

В Microsoft Access для обозначения связанных таблиц и таблиц, хранящихся в текущей базе данных, используются разные значки. Если удалить значок связанной таблицы, удаляется связь с таблицей, но не сама внешняя таблица.

Импортируемые данные нельзя сразу добавлять в существующие таблицы (за исключением импорта таблиц или текстовых файлов). Однако после импорта таблицы можно добавить данные в другую таблицу с помощью запроса на добавление.

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

Если приходится регулярно повторять операцию импорта, автоматизируйте этот процесс с помощью макросов или программ на языке Visual Basic для приложений.

Макрос

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

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

Последовательность макрокоманд

Следующий макрос состоит из серии макрокоманд. Эти макрокоманды выполняются каждый раз при запуске макроса. Для запуска макроса следует обратиться к имени макроса «Просмотр товаров».

Группа макросов

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

Например, следующая группа макросов с именем «Кнопки» состоит из трех родственных макросов: «Сотрудники», «Товары» и «Отчеты». В каждом макросе содержится макрокоманда ОткрытьФорму (OpenForm), а в макросе «Товары» кроме того макрокоманда СдвигРазмер (MoveSize).

Имя в столбце Имя макроса определяет каждый макрос. При запуске макроса в группе макросов, выполняется макрокоманда в столбце Макрокоманда, а также все следующие макрокоманды, в которых столбец Имя макроса пуст.

Для запуска макроса из группы макросов следует указать имя группы, а затем, через точку, имя макроса. В предыдущем примере для обращения к макросу «Сотрудники» в группе макросов «Кнопки» следовало использовать синтаксис Кнопки.Сотрудники.

Условные макрокоманды 

Для вывода столбца Условие следует в окне макроса в меню Вид выбрать команду Условия. Следующий макрос запускает макрокоманды Сообщение (MsgBox) и ОстановитьМакрос (StopMacro) только в тех случаях, когда условие в столбце Условие истинно (когда поле «КодПоставшика» имеет значение Null).

Создание макроса

1	В окне базы данных выберите вкладку Макросы.

2	Нажмите кнопку Создать.

3	В ячейке столбца Макрокоманда нажмите кнопку раскрытия списка, открывающую список макрокоманд.

4	Выберите имя макрокоманды.

5	Введите текст комментария к макрокоманде (необязательно).

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

7	Для добавления в макрос других макрокоманд перейдите на следующую строку и повторите шаги с 3 по 6. Макрокоманды выполняются в порядке их расположения в бланке.

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

Группировка записей в отчете

В отчетах допускается группировка по 10 и менее полям или выражениям.

1	Откройте отчет в режиме конструктора.

2	Нажмите кнопку Сортировка и группировка    на панели инструментов, чтобы открыть окно Сортировка и группировка.

3	Укажите порядок сортировки данных в отчете.

4	Выберите поле или выражение, для которого задаются параметры группировки.

5	Задайте значения свойств группы, перечисленных в следующем списке. Чтобы создать уровень группировки и определить другие свойства группы, необходимо задать значение «Да» по крайней мере для одного из свойств Заголовок группы (GroupHeader) или Примечание группы (GroupFooter). 

·	Заголовок группы (GroupHeader). Добавляет или удаляет заголовок группы, определяемой полем или выражением.

·	Примечание группы (GroupFooter)

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

·	Группировка (GroupOn). Определяет способ группировки значений. Список доступных значений этого свойства зависит от типа данных поля, по которому проводится группировка. При группировке по выражению выводится полный список значений данного свойства.

·	Интервал (GroupInterval). Определяет любой допустимый интервал значений поля или выражения, по которому проводится группировка.

·	Не разрывать (KeepTogether). Задает или отменяет обязательную печать группы на одной странице.

Целостность БД.

Целостность данных означает систему правил, используемых в Microsoft Access для поддержания связей между записями в связанных таблицах, а также обеспечивает защиту от случайного удаления или изменения связанных данных. Установить целостность данных можно, если выполнены следующие условия.

·	Связанное поле главной таблицы является ключевым полем или имеет уникальный индекс.

·	Связанные поля имеют один тип данных. Здесь существует два исключения. Поле счетчика может быть связано с числовым полем, если в последнем в свойстве Размер поля (FieldSize) указано значение «Длинное целое». А также поле счетчика можно связать с числовым полем, если и в обеих ячейках свойства Размер поля (FieldSize) задано значение «Код репликации».

·	Обе таблицы принадлежат одной базе данных Microsoft Access. Если таблицы являются связанными, то они должны быть таблицами Microsoft Access. Для установки целостности данных база данных, в которой находятся таблицы, должна быть открыта. Для связанных таблиц из баз данных других форматов установить целостность данных невозможно.

Установив целостность данных, необходимо следовать следующим правилам.

·	Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными. Например, нельзя сохранить запись, регистрирующую заказ, сделанный несуществующим клиентом, но можно создать запись для заказа, который пока не отнесен ни к одному из клиентов, если ввести пустое значение в поле «КодКлиента».

·	Не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице. Например, невозможно удалить запись из таблицы «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к данному сотруднику.

·	Невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной. Например, невозможно изменить код сотрудника в таблице «Сотрудники», если в таблице «Заказы» имеются заказы, относящиеся к этому сотруднику.

Чтобы наложить эти правила на конкретную связь, при ее создании следует установить флажок Обеспечение целостности данных. Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет.



Формы или отчеты, не связанные с таблицей, запросом или инструкцией SQL (имеющие пустое значение свойства Источник записей (RecordSource)). Примером свободной формы может служить диалоговое окно.

Запросы по нескольким таблицам.

·	В режиме конструктора запроса переместите с помощью мыши поле из списка полей одной таблицы или запроса в соответствующее поле (поле, имеющее одинаковый или совместимый тип данных, содержащее похожие данные) из списка полей другой таблицы или запроса.

При использовании этого типа объединения из обеих таблиц или запросов выбираются записи, только если значения объединенных полей равны. 

Примечания   

·	Числовые поля могут быть объединены, только если свойство Размер поля (FieldSize) имеет значения Байт (Byte), Целое (Integer) или Длинное целое (Long Integer). 

·	Тип объединения можно изменить таким образом, что из таблицы или запроса будут выбраны все записи, не зависимо от того, содержит ли вторая таблица или запрос соответствующие им записи. 

Сортировка записей в таблице.

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

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

Вне зависимости от используемого способа сортировки записей Microsoft Access сохраняет порядок сортировки при сохранении формы или объекта в режиме таблицы и повторно применяет его при новом открытии объекта или при создании новой формы или отчета на основе этого объекта.

Особенности сортировки записей

·	При сохранении таблицы, запроса или формы сохраняется и их порядок сортировки. Если новая форма или отчет основываются на таблице или запросе, порядок сортировки которых был сохранен вместе с ними, то он перейдет и к новой форме или отчету.

·	В одном или нескольких полях результатов запроса или расширенного фильтра может быть отсортировано до 255 символов.

·	Порядок сортировки зависит от настроек языка, определенных в диалоговом окне Параметры при создании базы данных. Чтобы проверить или изменить данную настройку в меню Сервис выберите команду Параметры, перейдите к вкладке Общие и обратитесь там к полю Порядок сортировки базы данных.

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

·	Для сортировки данных от более ранней даты к более поздней используйте возрастающий порядок сортировки. В обратном случае используйте убывающий порядок.

·	Цифры, находящиеся в текстовых полях, сортируются как строки символов, а не как числовые значения. Чтобы их отсортировать в числовом порядке, все текстовые строки содержать одинаковое количество символов. Если строка содержит меньшее количество символов, то в начале должны стоять незначащие нули. Например, результатом сортировки по возрастанию текстовых строк «1», «2», «11» и «22» будет «1», «11», «2», «22». Чтобы строки были отсортированы надлежащим образом, перед числами с меньшей разрядностью введите нули: «01», «02», «11», «22». Еще одним решением данной проблемы для полей, не содержащих пустые значения, будет использование функции Val для сортировки числовых значений строк. Например, если столбец «Возраст» является текстовым полем, то, чтобы должным образом произвести в нем сортировку данных, в ячейке Поле необходимо указать функцию Val([Возраст]), а в ячейке Сортировка указать требуемый порядок сортировки. Если в текстовом поле находятся только числовые значения или значения дат, то рекомендуется изменить в данной таблице тип поля на числовой, денежный или Дата/время. Тогда сортировка содержащихся в данном поле чисел или дат будет выполнена надлежащим образом без ввода дополнительных нулей.

·	При сортировке поля в возрастающем порядке записи, содержащие пустые поля (с пустыми значениями), указываются в списке первыми. Если поле содержит записи как с пустыми значениями, так и с пустыми строками, при сортировке первыми будут отображены поля с пустыми значениями, а сразу за ними поля с пустыми строками.

·	Невозможно сортировать поля МЕМО, гиперссылки или объекты OLE.

Добавление новых данных в режиме таблицы.

1	Откройте таблицу в режиме таблицы или форму в режиме формы.

2	Нажмите на панели инструментов кнопку Новая запись  .

3	Введите данные и нажмите клавишу TAB для перехода к следующему полю.

В конце записи нажмите клавишу TAB для перехода к следующей записи.

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

Создание структуры БД.

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

Этапы проектирования базы данных

Ниже приведены основные этапы проектирования базы данных:

1	Определение цели создания базы данных.

2	Определение таблиц, которые должна содержать база данных.

3	Определение необходимых в таблице полей.

4	Задание индивидуального значения каждому полю.

5	Определение связей между таблицами.

6	Обновление структуры базы данных.

7	Добавление данных и создание других объектов базы данных.

8	Использование средств анализа в Microsoft Access.