Подведем итоги. Разработчики Access 2007 постарались сделать интерфейс новой версии популярной реляционной СУБД более понятным и простым. Для тех, кто начнет изучать реляционные БД с этой версии, будет не сложно ее освоить. Тем же, кто знаком с предыдущими версиями, придется пройти недолгий период адаптации. И, как говорится в известной сказке про Алису: «Вы не очень огорчайтесь, если тоже не все сразу поймете. Ведь всегда можно перечитать непонятное место еще разок, правда?»
Создания простых запросов на выборку
Запрос на выборку — это объект базы данных, который служит для отображения данных в режиме таблицы (Режим таблицы. Представление, в котором данные из таблицы, формы, запроса, представления или хранимой процедуры отображаются в формате строк и столбцов. В режиме таблицы поддерживается изменение значений полей, добавление или удаление данных и поиск данных.). Запрос может получать данные из одной или нескольких таблиц, из существующих запросов или из комбинаций таблиц и запросов. Таблицы или запросы, используемые для получения данных, называются источниками записей.
Создание простых запросов на выборку при использовании мастера и при работе в режиме конструктора происходит одинаково. Для этого следует выбрать источник записей и поля, которые требуется включить в запрос. При необходимости можно задать условия для уточнения результатов запроса.
После создания запроса на выборку его следует выполнить, чтобы получить результаты. Чтобы выполнить запрос, достаточно открыть его в режиме таблицы. Впоследствии запрос можно использовать повторно по мере необходимости, например в качестве источника записей для формы, отчета или другого запроса.
Существует несколько типов запросов, каждый из которых предназначен для определенной цели. Например, запрос на выборку служит для отображения данных или для создания новой таблицы. Запрос на изменение служит для изменения данных в источнике данных. При запуске запроса с параметрами требуется задать условия. В этом разделе описаны только запросы на выборку.
Общие сведения об условиях запроса
Условие аналогично формуле: это строка, которая может включать ссылки на поля, операторы (Оператор. Знак или символ, задающий тип вычисления в выражении. Существуют математические, логические операторы, операторы сравнения и ссылок.) и константы (Константа. Постоянное (не вычисляемое) значение. Например, число 210 и текст «Квартальная премия» являются константами. Выражение и результат вычисления выражения константами не являются.). В Microsoft Office Access 2007 условия называются также выражениями.
В приведенных ниже таблицах содержатся примеры условий и описание принципов их действия.
Условие
Описание
>25 и <50
Это условие применимо к полю типа полю типа «Числовой», например, к полю «Цена» или «НаСкладе». При использовании этого условия в результаты запроса включаются только те записи, в которых поле «Цена» или «НаСкладе» содержит значение больше 25 и меньше 50.
DateDiff ("yyyy", [ДатаРождения], Date()) > 30
Это условие применимо к полям типа «Дата/Время», например, к полю «ДатаРождения». В результаты запроса включаются только те записи, в которых количество лет, прошедшее с даты рождения сотрудника до текущей даты, превышает 30.
Is Null
Это условие можно применить к полю любого типа, чтобы отобразить записи с нулевым значением поля.
Как видно из приведенных выше примеров, условия могут быть совершенно различными в зависимости от типа данных поля и требований пользователя. В простых условиях используются базовые операторы и константы. В сложных — функции, специальные операторы и ссылки на поля.
В этом разделе приводится список некоторых наиболее часто применяемых условий для типа данных. Если приведенные примеры не соответствуют требованиям, возможно придется составить собственные условия. Предварительно необходимо изучить полный список функций, операторов, специальных знаков и синтаксис выражений, включающих ссылки на поля и текстовые константы.
В этом разделе объясняется, как и где добавлять условия. Чтобы добавить в запрос условие, необходимо открыть запрос в режиме конструктора. Затем следует определить поля, на которые распространяется данное условие. Если в бланке запроса отсутствует нужное поле, его можно добавить самостоятельно, перетащив его из окна конструктора запросов или дважды щелкнув его. (При двойном щелчке поле автоматически добавляется в следующий пустой столбец сетки полей.) Наконец, следует ввести тип условия в строке Условия.
Условия, заданные для различных полей в строке Условия, объединяются с помощью оператора AND. Например, условия, заданные в полях «Город» и «ДатаРождения», интерпретируются следующим образом:
Город = "Чикаго" AND ДатаРождения < DateAdd("yyyy", -40, Date())
Поля «Город» и «ДатаРождения» включают условия.
Этому условию будут удовлетворять только те записи, в которых поле «Город» принимает значение «Чикаго».
Этому условию будут удовлетворять только те записи, в которых возраст человека составляет не менее 40 лет.
В результат будут включены только те записи, которые удовлетворяют обоим условиям.
Как сделать, чтобы выполнялось только одно условие? Другими словами, как ввести взаимоисключающие условия?
Если при наличии взаимоисключающих условий или двух наборов независимых условий требуется, чтобы выполнялось лишь одно условие или набор условий, в бланке запроса следует использовать строки Условия и или.
Условие «Город» указано в строке «Условия».
Условие «ДатаРождения» указано в строке «или».
Условия, заданные в строках Условия и или, объединяются с помощью оператора OR, как показано в примере:
Город = "Чикаго" OR ДатаРождения < DateAdd("yyyy", -40, Date())
Если нужно задать несколько условий, следует использовать строки, расположенные под строкой или.
Прежде чем приступать к изучению примеров, обратите внимание на следующее:
Если условие является временным или часто меняется, можно не изменять его, а фильтровать результаты запроса. Фильтр — это временное условие, которое позволяет изменить результаты запроса без изменения его структуры. Дополнительные сведения о фильтрах см. в статье Фильтр: ограничение количества записей в представлении.
Если поля для условия не меняются, но при этом часто меняются нужные значения, можно создать запрос с параметрами. В таком запросе пользователю предлагается ввести значения поля, которые затем используются для создания условия запроса. Дополнительные сведения о параметрических запросах см. в статье Использование параметров в запросах и отчетах.
Условия для полей с типами данных «Текстовый», «Поле MEMO» и «Гиперссылка»
Ниже приведены примеры использования поля «Страна» в запросе, сформированном на основе таблицы сведений о контактах. Условие задается в строке Условие для данного поля в бланке запроса.
Условие, заданное для поля типа «Гиперссылка», применяется к отображаемой (текстовой) части значения поля. Чтобы задать условие для части с адресом URL, используйте выражение HyperlinkPart. Используется следующий синтаксис: HyperlinkPart([Таблица1].[Поле1],1) = "http://www.microsoft.com/", где «Таблица1» — имя таблицы, содержащей поле гиперссылки, «Поле1» — это поле гиперссылки, а http://www.microsoft.com — это адрес URL, который требуется сопоставить.
Записи
Условие
Результат запроса
Точно соответствуют определенному значению, например, «Китай»
"Китай"
Записи, в которых поле «Страна» содержит значение «Китай».
Не соответствуют определенному значению, например, «Мексика»
Not "Мексика"
Записи, в которых значением поля «Страна» не является «Мексика».
Начинаются с заданной строки символов, например «С»
Like С*
Записи, в которых название страны начинается с буквы «С», например, Словакия, США и т.д.
Примечание. Используемая в выражении звездочка (*) является подстановочным знаком и заменяет любые данные. Список подстановочных знаков см. в статье Справочные сведения о подстановочных знаках в приложении Access.
Не начинаются с заданной строки символов, например «С»
Not Like С*
Записи, в которых названия стран не начинаются с буквы «С».
Содержат заданную строку, например «Корея»
Like "*Корея*"
Записи с названиями стран, которые содержат слово «Корея».
Не содержат заданную строку, например «Корея»
Not Like "*Корея*"
Записи с названиями стран, которые не содержат слово «Корея».
Заканчиваются заданной строкой, например «ина»
Like "*ина"
Записи, в которых названия стран заканчиваются на «ина», например «Украина» или «Аргентина».
Не заканчиваются заданной строкой, например «ина»
Not Like "*ина"
Записи, в которых названия стран не заканчиваются на «ина», например «Украина» или «Аргентина».
Содержат пустые значения (значение отсутствует)
Is Null
Записи, в которых данное поле не содержит значения.
Не содержат пустых значений
Is Not Null
Записи, в которых данное поле содержит ненулевое значение.
Содержат пустую строку
"" (прямые кавычки)
Записи, в которых поле имеет пустое (но не нулевое) значение. Например, записи о продажах для другого отдела могут содержать пустое значение в поле «Страна».
Не содержат пустую строку
Not ""
Записи, в которых поле имеет непустое значение.
Содержит нулевые или пустые значения
"" Or Is Null
Записи, в которых значение в поле отсутствует или пусто.
Ненулевые и непустые
Is Not Null And Not ""
Записи, в которых поле «Страна» имеет непустое и ненулевое значение.
При сортировке в алфавитном порядке следуют за определенным значением, например «Мексика»
>= "Мексика"
Записи для всех стран, начиная с Мексики и вплоть до конца алфавита.
Входят в определенный диапазон, например от А до Г
Like "[А-Г]*"
Записи, в которых название страны начинается с одной из букв от «А» до «Г».
Совпадают с одним из двух значений, например «Словакия» или «США»
"Словакия" Or "США"
Записи для США и Словакии.
Содержат одно из значений, указанных в списке
In("Франция", "Китай", "Германия", "Япония")
Записи для всех стран, упомянутых в списке.
Содержат определенные знаки в заданном месте значения поля
Right([Страна], 1) = "а"
Все записи, в которых названия стран оканчиваются на букву «а».
Соответствуют заданной длине
Len([Страна]) > 10
Записи, в которых длина названия страны превышает 10 знаков.
Соответствуют заданному шаблону
Like "Лив??"
Записи для стран, таких как Ливия и Ливан, названия которых включают пять знаков, первые три из которых — «Лив».
Примечание. Используемые в выражении знаки ? и _ являются подстановочными и заменяют один знак. . Знак _ нельзя использовать в одном выражении со знаком ? или в одном выражении с подстановочным знаком *. Можно использовать подстановочный знак _ в выражении, которое содержит знак %.
Условия для полей типа «Числовой», «Денежный» и «Счетчик»
Ниже приведены примеры использования поля «Цена» в запросе, сформированном на основе таблицы сведений о товарах. Условие задается в строке Условия для данного поля в бланке запроса.
Записи
Условие
Результат запроса
Точно соответствуют определенному значению, например 100
Записи, в которых цена единицы продукта составляет 100 рублей.
Не соответствуют значению, например, 1000
Not 1000
Записи, в которых цена единицы продукта не равна 1000 рублей.
Содержат значение, которое меньше заданного, например 100
< 100 <= 100
Записи, в которых указана цена единицы меньше 100 рублей (<100). Второе выражение (<=100) позволяет отобразить записи, в которых цена единицы меньше либо равна 100.
Содержат значение, которое больше заданного, например 99,99
>99,99 >=99,99
Записи, в которых указана цена единицы больше 99,99 рублей (<99,99). Второе выражение позволяет отобразить записи, в которых цена единицы больше либо равна 99,99.
Содержат одно из двух значений, например 20 или 25
20 or 25
Записи, в которых цена единицы равна 20 или 25 рублям.
Содержат значение, которое входит в определенный диапазон
>49.99 and <99.99 -или- Between 50 and 100
Записи, в которых указана цена единицы в диапазоне между 49,99 и 99,99 рублей (сами эти значения не включаются в результаты).
Содержат значение, которое не входит в определенный диапазон
<50 or >100
Записи, в которых цена единицы не входит в диапазон от 50 до 100 рублей.
Содержит одно из заданных значений
In(20, 25, 30)
Записи, в которых цена единицы равна 20, 25 или 30 рублям.
Содержат значение, которое заканчивается на заданные цифры
Like "*4,99"
Записи, в которых цена единицы заканчивается на цифры 4,99, например 4,99, 14,99, 24,99 рублей и т. д.
Примечание. Используемые в выражении знаки * и % являются подстановочными и заменяют любое количество знаков. . Знак % нельзя использовать в одном выражении со знаком * или в одном выражении с подстановочным знаком ?. Можно использовать подстановочный знак % в выражении, которое содержит знак _.
Содержат пустые (или отсутствующие) значения
Is Null
Записи, в которых поле «Цена» не заполнено.
Содержат непустые значения
Is Not Null
Записи, в которых поле «Цена» заполнено.
Условия для полей с типом данных «Дата/Время»
Ниже приведены примеры использования поля «ДатаЗаказа» в запросе, сформированном на основе таблицы сведений о продажах. Условие задается в строке Условия для данного поля в бланке запроса.
Записи
Условие
Результат запроса
Точно соответствуют определенному значению, например 02.02.2006
#02.02.2006#
Записи об операциях, совершенных 2 февраля 2006 г. Значения даты должны быть окружены знаками #, чтобы Access мог отличить значения даты от текстовых строк.
Не соответствуют определенному значению, например 02.02.2006
Not #02.02.2006#
Записи об операциях, совершенных в любой день, кроме 2 февраля 2006 г.
Содержат значения, которые предшествуют определенной дате, например 02.02.2006
< #02.02.2006#
Записи об операциях, совершенных до 2 февраля 2006 г.
Чтобы просмотреть операции, совершенные до этой даты включительно, воспользуйтесь оператором <= вместо <.
Содержат значения, которые следуют за определенной датой, например 02.02.2006
> #02.02.2006#
Записи об операциях, совершенных после 2 февраля 2006 г.
Чтобы просмотреть операции начиная с этой даты, воспользуйтесь оператором >= вместо >.
Содержат значения, которые входят в определенный диапазон дат
>#02.02.2006# and <#04.02.2006#
Записи об операциях, совершенных между 2 и 4 февраля 2006 г.
Для фильтрации по диапазону значений можно также использовать оператор Between. Например, выражение Between #02.02.2006# and #04.02.2006# идентично выражению >#02.02.2006# and <#04.02.2006#.
Содержат значения, которые не входят в определенный диапазон
>#02.02.2006# and <#04.02.2006#
Записи об операциях, совершенных либо до 2 февраля либо после 4 февраля 2006 г.
Содержат одно из двух заданных значений, например, 02.02.2006 или 03.02.2006
#02.02.2006# or #03.02.2006#
Записи об операциях, совершенных либо 2 февраля, либо 3 февраля 2006 г.
Содержит одно из заданных значений
In (#01.02.2006#, #01.03.2006#, #01.04.2006#)
Записи об операциях, совершенных 1 февраля, 1 марта или 1 апреля 2006 г.
Содержат любой день заданного месяца (вне зависимости от года), например, «декабрь»
DatePart("М", [ДатаПродажи]) = 12
Записи об операциях, совершенных в декабре любого года.
Содержат любую дату в пределах заданного, (например, первого) квартала вне зависимости от года
DatePart("q", [ДатаПродажи]) = 1
Записи об операциях, совершенных в первом квартале любого года.
Содержат текущую дату
Date()
Записи об операциях, совершенных на текущую дату. Если текущая дата — 02.02.2006, отображаются записи, в которых значению поля «ДатаЗаказа» соответствует 2 февраля 2006 г.
Содержат вчерашнюю дату
Date()-1
Записи об операциях, совершенных за один день до текущей даты. Если текущая дата — 02.02.2006, отображаются записи с датой 1 февраля 2006 г.
Содержат завтрашнюю дату
Date() + 1
Записи об операциях, совершенных на следующий день после текущей даты. Если текущая дата — 02.02.2006, отображаются записи с датой 3 февраля 2006 г.
Содержат даты, которые приходятся на текущую неделю
DatePart("ww", [ДатаПродажи]) = DatePart("ww", Date()) and Year( [ДатаПродажи]) = Year(Date())
Записи об операциях, совершенных на текущей неделе. Неделя начинается в понедельник и заканчивается в воскресенье.
Содержат даты, которые приходятся на прошедшую неделю
Записи об операциях, которые будут совершены на следующей неделе. Неделя начинается в понедельник и заканчивается в воскресенье.
Содержат один из последних 7 дней
Between Date() and Date()-6
Записи об операциях, совершенных в течение последних 7 дней. Если текущая дата — 02.02.2006, отображаются записи за период с 24 января 2006 по 2 февраля 2006 г.
Содержат дату, которая приходится на текущий месяц
Year([ДатаПродажи]) = Year(Now()) And Month([ДатаПродажи]) = Month(Now())
Записи за текущий месяц. Если текущая дата — 02.02.2006, отображаются записи за февраль 2006 г.
Содержат дату, которая приходится на прошедший месяц
Записи за следующий квартал. Если текущая дата — 02.02.2006, отображаются записи за второй квартал 2006 г.
Содержат дату, которая приходится на текущий год
Year([ДатаПродажи]) = Year(Date())
Записи за текущий год. Если текущая дата — 02.02.2006, отображаются записи за 2006 год.
Содержат дату, которая приходится на предыдущий год
Year([ДатаПродажи]) = Year(Date()) - 1
Записи об операциях за прошедший год. Если текущая дата — 02.02.2006, отображаются записи за 2005 год.
Содержат дату, которая приходится на следующий год
Year([ДатаПродажи]) = Year(Date()) + 1
Записи об операциях за следующий год. Если текущая дата — 02.02.2006, отображаются записи за 2007 год.
Содержат дату, которая приходится на период от 1 января до текущей даты (записи с начала года до настоящего момента)
Year([ДатаПродажи]) = Year(Date()) and Month([ДатаПродажи]) <= Month(Date()) and Day([ДатаПродажи]) <= Day (Date())
Записи об операциях, совершенных с 1 января текущего года по текущую дату. Если текущая дата — 02.02.2006, отображаются записи за период с 1 января по 2 февраля 2006 г.
Содержат прошедшую дату
< Date()
Записи об операциях, совершенных до наступления текущей даты.
Содержат будущую дату
> Date()
Записи об операциях, совершенных после текущей даты.
Фильтр пустых (или отсутствующих) значений
Is Null
Записи, в которых дата операции отсутствует.
Фильтр непустых значений
Is Not Null
Записи, в которых дата операции указана.
Условия для других полей
Поле типа «Логический» В строку Условия введите значение Да, чтобы включить в результаты записи, для которых установлен соответствующий флажок. Введите значение Нет, чтобы включить в результаты записи со снятым флажком.
Вложения В строку Условия введите значение Is Null, чтобы включить в результаты записи без вложений. Введите условие Is Not Null, чтобы включить в результаты записи с вложениями.
Поля подстановок Существуют два типа полей подстановок: поля, значения для которых извлекаются из существующего источника данных (с помощью внешнего ключа), и поля, которые сформированы на основе списка значений, заданного при создании поля подстановок.
Поля подстановок последнего типа являются текстовыми; к ним можно применять те же условия, что и к другим текстовым полям.
Условия для поля подстановок, которое сформировано на основе значений из существующего источника данных, зависят от типа данных внешнего ключа, а не от типа искомых данных. Предположим, что поле подстановок служит для отображения имени сотрудника; при этом внешний ключ имеет тип данных «Числовой». Поскольку в этом поле хранятся числа, а не текст, для него следует использовать условия, применимые к числам, т. е. >2.
Если тип данных внешнего ключа неизвестен, можно просмотреть источник данных в режиме конструктора, чтобы определить типы данных для полей. Выполните следующие действия.
Найдите исходную таблицу в области переходов.
Откройте таблицу в режиме конструктора, выполнив одно из следующих действий.
Выделите таблицу и нажмите сочетание клавиш CTRL+ВВОД
Щелкните таблицу правой кнопкой мыши и выберите пункт Конструктор.
Типы данных для каждого поля перечислены в столбце Тип данных бланка таблицы.
Поля, допускающие несколько значений Данные такого поля хранятся в виде строк скрытой таблицы, которая создается и заполняется в Office Access 2007 для поля. В режиме конструктора запроса такое поле представлено в списке полей в виде раскрывающегося поля. Чтобы создать условия для поля, допускающего несколько значений, необходимо задать условия для одной строки скрытой таблицы. Для этого необходимо выполнить следующие действия:
Создайте запрос, который содержит поле, допускающее несколько значений, и откройте его в режиме конструктора.
Разверните поле, одновременно допускающее несколько значений, щелкнув знак «плюс» (+) рядом с ним. Если поле развернуто, рядом с ним отображается знак «минус» (-). Непосредственно под именем поля будет отображено поле с отдельным значением. Имя этого поля совпадает с именем поля, допускающего несколько значений, но к нему добавлена строка .Value.
Перетащите поле, одновременно допускающее несколько значений, и поле с отдельным значением в разные столбцы бланка запроса. Если в результаты требуется включить все поле, допускающее несколько значений, снимите флажок Показать для поля с отдельным значением.
В строке Условия для поля с отдельным значением введите условие, соответствующее типу данных выбранного значения.
Каждое значение поля, допускающего несколько значений, будет сравниваться с заданным условием. Например, предположим, что в поле, одновременно допускающем несколько значений, хранится список чисел. Если задано условие >5 AND <3, ему соответствуют все записи, в которых хотя бы одно значение больше 5 и хотя бы одно значение меньше 3.
Создание запроса
Цель этого упражнения — создать запрос на выборку «Контакты в Твери». Для этого можно использовать либо режим конструктора, либо мастер. Кроме того, если пользователь знаком с созданием инструкций SQL (Инструкция (строка) SQL. Выражение, определяющее команду SQL, например SELECT, UPDATE или DELETE, и включающее предложения, например WHERE или ORDER BY. Инструкции/строки SQL обычно используются в запросах и в агрегатных функциях.), можно создать запрос в режиме SQL с помощью инструкции SELECT.
Для начала работы необходимо иметь таблицу, содержащую информацию. Пример информации приведен в нижеследующей HTML-таблице.
Код клиента
Компания
Адрес
Город
Область, край, республика
Почтовый индекс
Страна
Телефон
Контактное лицо
Дата рождения
Музей научных достижений
Загородное шоссе, д. 150
Москва
Московская обл.
Россия
(5506) 99-02-01
Песоцкий Станислав
03-дек-1945
Авиакомпания «Голубые линии»
ул. Гарибальди, д. 170
Пермь
Пермская обл.
Россия
(5406) 78-23-71
Корепин Вадим
21-мар-1959
Винный завод
ул. Кедрова, д. 54
Красноярск
Красноярский край
Россия
(206) 555-0042
Ожогина Инна
01-апр-1973
Фармацевтическая фабрика
ул. Губкина, д. 233
Тверь
Россия
(171) 555-0125
Новиков Николай
16-июн-1967
Кофейная фабрика
Тверь
Россия
(171) 555-0165
Шашков Руслан
09-авг-1971
Почтовая служба
Лихов пер., д. 991
Красноярск
Красноярский край
Россия
(206) 555-0007
Подколзина Екатерина
27-май-1948
НИИ железа
ул. Ленина, д. 4
Тверь
Россия
(171) 555-0178
Попкова Дарья
12-авг-1971
Корпорация «Софт»
Староколпакский пер., д. 3
Москва
Московская обл.
Россия
(503) 555-0086
Грачев Николай
01-окт-1975
Лесопитомник
Михаиловский проезд, д. 22
Тверь
Россия
Сергиенко Мария
15-фев-1953
Гроссбанк
Пригородная ул., д 37
Тверь
Россия
(171) 555-0101
Верный Григорий
25-окт-1938
Можно ввести информацию из этой таблицы вручную или скопировать ее в программу электронных таблиц, например в приложение Microsoft Office Excel 2007, а затем импортировать получившийся лист в приложение Microsoft Office Access 2007.
Ввод образца данных вручную
На вкладке Создание в группе Таблицы щелкните Таблица.
Office Access 2007 добавляет в базу данных новую пустую таблицу.
Примечание. Этот шаг следует выполнять не при открытии новой пустой базы данных, но при добавлении таблицы в базу данных.
Дважды щелкните первую ячейку в строке заголовка и введите имя поля из образца таблицы.
По умолчанию приложение Access помечает пустые поля в строке заголовка текстом Добавить поле, например:
Используя клавиши со стрелками, переместитесь к следующей пустой ячейке заголовка и введите имя второго поля (также можно нажать клавишу TAB или дважды щелкнуть новую ячейку). Повторяйте эту процедуру для ввода всех имен полей.
Введите данные в таблицу примера.
При вводе информации в приложении Access каждой ячейке присваивается тип данных. Каждое поле в таблице имеет определенный тип данных, например «Числовой», «Текстовый», «Дата/Время». Присвоение типов данных обеспечивает точность ввода информации и помогает предотвратить ошибки, например использование телефонного номера в вычислениях. Для каждого поля в таблице можно задать тип данных и при определенных условиях изменить его. При создании таблицы примера присвоение типа данных должно осуществляться приложением Access.
После завершения ввода данных, нажмите кнопку Сохранить.
Клавиши быстрого доступа Нажмите клавиши CTRL+S.
Появится диалоговое окно Сохранить как.
В поле Имя таблицы введите текст «Клиенты» и нажмите кнопкуОК.
Скопируйте таблицу в программу электронных таблиц, а затем импортируйте её в приложение Access.
Запустите программу электронных таблиц и создайте новый пустой файл. Если используется приложение Excel, то новая книга будет создана по умолчанию.
Скопируйте представленную в предыдущем разделе таблицу примера и вставьте ее в первую ячейку первого листа.
Следуя инструкциям программы электронных таблиц, присвойте листу имя «Клиенты».
Сохраните файл таблицы в удобном месте и переходите к следующему шагу.
В новой или существующей базе данных выполните следующие действия.
На вкладке Внешние данные в группе Импорт выберите команду Excel.
-
Щелкните пункт Дополнительные параметры, а затем выберите из списка программу электронных таблиц.
Появится диалоговое окно Внешние данные — Имя программы Электронная таблица.
Нажмите кнопку Обзор, откройте файл таблицы, созданный в предыдущих шагах, а затем нажмите кнопку ОК.
Откроется окно мастера импорта электронных таблиц.
По умолчанию мастер выбирает первый лист в книге (в рассматриваемом примере — лист «Клиенты»), и данные из этого листа появляются в нижней части страницы мастера. Нажмите кнопку Далее.
На следующей странице мастера выберите пункт Первая строка содержит названия столбцов, а затем нажмите кнопку Далее.
На следующей странице мастера пользователю будет предложено изменить имена полей и типы данных, чтобы исключить поля из импорта с помощью текстовых полей и списков в разделе Описание поля. Для данного примера этого не требуется. Нажмите кнопку Далее.
На следующей странице мастера в поле Описание поля выберите вариант Да (Совпадения не допускаются) из списка Индексированное поле и Длинное целое из списка Тип данных. Чтобы продолжить, нажмите кнопку Далее.
На следующей странице мастера выберите элемент Определить ключ, выберите из списка значение КодКлиента, а затем нажмите кнопку Далее.
По умолчанию в приложении Access к новой таблице применяется имя листа. Убедитесь в том, что таблица называется «Клиенты», а затем нажмите кнопку Готово.
На последней странице мастера можно сохранить процедуру импорта для дальнейшего использования. Так как выполняется импорт таблицы примера, сохранять процедуру импорта не рекомендуется.
Примечание. Если программа электронных таблиц не установлена, данные примера можно скопировать в текстовый редактор, например в Блокнот. Дополнительные сведения об импортировании текстовых данных см. в статье Импорт или связывание с данными текстового файла.
В упражнении для создания запроса на основе созданной таблицы используется мастер. Созданный запрос изменяется в режиме конструктора. На любом этапе можно просмотреть инструкцию SQL, которая автоматически создается при выполнении шагов.
На вкладке Создание в группе Другие щелкните Мастер запросов.
В диалоговом окне Новый запрос выберите вариант Создание простых запросов и нажмите кнопку ОК.
В группе Таблицы и запросы выберите таблицу, содержащую нужные данные. В данном случае это таблица Клиенты. Обратите внимание на то, что в качестве источника данных можно использовать другой запрос.
В группе Доступные поля дважды щелкните поля Контакт, Адрес, Телефон и Город. При этом они добавляются в список Выбранные поля. После добавления всех четырех полей нажмите кнопку Далее.
Присвойте запросу имя Контакты в Твери, а затем нажмите кнопку Готово.
В приложении Access все записи о контактах будут отображены в режиме таблицы. В результаты включаются все записи, но при этом отображаются только четыре поля, указанные в запросе.
Обзор исходной инструкции SQL
Нажмите кнопку Режим SQL в строке состояния приложения Access либо щелкните правой кнопкой мыши ярлык объекта запроса, а затем выберите команду Режим SQL. В приложении Access запрос открывается в режиме SQL и отображает следующие данные:
Как видно из примера, SQL-запрос состоит из двух основных частей: оператора SELECT, перечисляющего все поля, включенные в запрос, и оператора FROM, перечисляющего таблицы, содержащие эти поля.
Примечание. Если поля добавлялись в порядке, отличном от описанного на предыдущем шаге, это будет отражено в операторе SELECT.
Закройте запрос. Обратите внимание на то, что он сохраняется автоматически.
Добавление условий в запрос
Чтобы ограничить результаты запроса определенными записями, можно задать одно или несколько условий.
Критерий запроса можно использовать в качестве условия для поля. В условии указываются значения поля, которые требуется включить в запрос, например «отображать только записи, в которых поле «Город» имеет значение «Тверь»».
Откройте запрос в режиме конструктора. В поля запроса добавьте условие, чтобы в результаты включались только записи о контактах, проживающих в Твери. Для уточнения результатов поиска также можно добавить условия для полей «Адрес» и «Телефон».
В строке Условия строки «Город» введите Тверь.
Затем добавьте еще два условия, чтобы сузить результаты поиска. Предположим, что требуется отобразить только те записи, в которых присутствуют адрес и номер телефона.
В строку Условия поля «Адрес» введите значение Is Not Null AND <>"". Введите то же значение в строке Условия поля «Телефон».
Примечание. Условие Is Not Null AND <>"" является истинным, если поле содержит любое известное не пустое значение. Условие является ложным, если поле не содержит известного значения (Null) или значение заведомо пустое (""). Этим выражением можно проверять поле на наличие известного не пустого значения.
Переключитесь в режим таблицы, чтобы просмотреть результаты.
Просмотр SQL-выражения с условием
Нажмите кнопку Режим SQL в строке состояния приложения Access либо щелкните правой кнопкой мыши ярлык документа запроса, а затем выберите команду Режим SQL. В приложении Access отображается следующий SQL-код:
SELECT Customers.[Contact], Customers.[Address], Customers.[Phone], Customers.[City]FROM CustomersWHERE (((Customers.[Address]) Is Not Null And (Customer.[Address])<>"") AND ((Customer.[Phone]) Is Not Null And (Customer.[Phone])<>"") AND ((Customer.[City])="london"));
Обратите внимание на то, что теперь SQL-выражение содержит оператор WHERE. Указанные для полей запроса условия в SQL отображаются в операторе WHERE. В данном случае они связаны оператором AND.
Что необходимо сделать, чтобы условия не объединялись оператором AND? Другими словами, что следует сделать, чтобы возвращаемые записи удовлетворяли одному из условий или обоим?