Мой комп - Железо. Windows. Интернет. Программы

Как создать новый запрос в access. Создание запросов в microsoft access

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

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

Условие запроса - это выражение, которое Access сравнивает со значениями в полях запроса, чтобы определить, следует ли включать в результат записи, содержащие то или иное значение. Например, = "Воронеж" - это выражение, которое Access сравнивает со значениями в текстовом поле запроса. Если значение этого поля в определенной записи равно "Воронеж" , Access включает ее в результаты запроса.

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

В этом разделе

Общие сведения об условиях запроса

Условие похоже на формулу - это строка, которая может включать ссылки на поля, операторы и константы. В Access условия запроса также называются выражениями.

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

Условия

Описание

>25 and <50

Это условие применяется к числовому полю, такому как "Цена" или "ЕдиницНаСкладе". Оно позволяет вывести только те записи, в которых поле "Цена" или "ЕдиницНаСкладе" содержит значение больше 25 и меньше 50 .

DateDiff ("гггг", [ДатаРождения], Date()) > 30

Это условие применяется к полю "Дата/время", такому как "ДатаРождения". В результаты запроса включаются только записи, в которых количество лет между датой рождения человека и текущей датой больше 30 .

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

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

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

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

Условия, заданные для разных полей в строке Условия , объединяются с помощью оператора AND. Другими словами, условия, заданные в полях "Город" и "ДатаРождения", интерпретируются следующим образом:

Город = "Воронеж" AND ДатаРождения < DateAdd (" гггг ", -40, Date())

1. Поля "Город" и "ДатаРождения" включают условия.

2. Этому условию соответствуют только записи, в которых поле "Город" имеет значение "Воронеж".

3. Этому условию соответствуют только записи людей, которым не менее 40 лет.

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

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

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

1. 1. Условие "Город" указывается в строке "Условие отбора".

2. 2. Условие "ДатаРождения" указывается в строке "или".

Условия, заданные в строках Условие отбора и или , объединяются с помощью оператора OR, как показано ниже.

Город = "Чикаго" OR ДатаРождения < DateAdd("гггг", -40, Date())

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

Прежде чем приступить к изучению примеров, обратите внимание на следующее:

Условия для текстовых полей, полей Memo и полей гиперссылок

Примечание: Начиная с версии Access 2013, текстовые поля носят название Краткий текст , а поля Memo - Длинный текст .

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

Условие, заданное для поля "Гиперссылка", по умолчанию применяется к отображаемому тексту, который указан в поле. Чтобы задать условия для конечного URL-адреса, используйте выражение HyperlinkPart . У него следующий синтаксис: HyperlinkPart([Таблица1].[Поле1],1) = "http://www.microsoft.com/" , где "Таблица1" - это имя таблицы, содержащей поле гиперссылки, "Поле1" - это само поле гиперссылки, а "http://www.microsoft.com" - это URL-адрес, который вы хотите найти.

Используйте это условие

Результат запроса

Точно соответствуют определенному значению, например "Китай"

Возвращает записи, в которых поле "СтранаРегион" содержит значение "Китай".

Не соответствуют определенному значению, например "Мексика"

Not "Мексика"

Возвращает записи, в которых значением поля "СтранаРегион" не является "Мексика".

Начинаются с заданной строки символов, например "С"

Возвращает записи всех стран или регионов, названия которых начинаются с буквы "С", таких как Словакия и США.

Примечание: Символ "звездочка" (* ) в выражении обозначает любую строку символов. Он также называется подстановочным знаком. Список таких знаков см. в статье Справочные сведения о подстановочных знаках в приложении Access .

Не начинаются с заданной строки символов, например "С"

Возвращает записи всех стран или регионов, названия которых не начинаются с буквы "С".

Like "*Корея*"

Возвращает записи всех стран или регионов, названия которых содержат строку "Корея".

Not Like "*Корея*"

Возвращает записи всех стран или регионов, названия которых не содержат строку "Корея".

Заканчиваются заданной строкой, например "ина"

Возвращает записи всех стран или регионов, названия которых заканчиваются на "ина", таких как "Украина" и "Аргентина".

Не заканчиваются заданной строкой, например "ина"

Not Like "*ина"

Возвращает записи всех стран или регионов, названия которых не заканчиваются на "ина", как в названиях "Украина" и "Аргентина".

Возвращает записи, в которых это поле не содержит значения.

Возвращает записи, в которых это поле содержит значение.

"" (прямые кавычки)

Возвращает записи, в которых поле имеет пустое значение (но не значение NULL). Например, записи о продажах другому отделу могут содержать пустое значение в поле "СтранаРегион".

Возвращает записи, в которых поле "СтранаРегион" имеет непустое значение.

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

Возвращает записи, в которых значение в поле отсутствует или является пустым.

Ненулевые и непустые

Is Not Null And Not ""

Возвращает записи, в которых поле "СтранаРегион" имеет непустое значение, не равное NULL.

При сортировке в алфавитном порядке следуют за определенным значением, например "Мексика"

>= "Мексика"

Возвращает записи с названиями стран и регионов, начиная с Мексики и до конца алфавита.

Входят в определенный диапазон, например от А до Г

Возвращает страны и регионы, названия которых начинается с букв от "А" до "Г".

Совпадают с одним из двух значений, например "Словакия" или "США"

"Словакия" Or "США"

Возвращает записи для США и Словакии.

In("Франция", "Китай", "Германия", "Япония")

Возвращает записи всех стран или регионов, указанных в списке.

Right([СтранаРегион], 1) = "а"

Возвращает записи всех стран или регионов, названия которых заканчиваются на букву "а".

Соответствуют заданной длине

Len([СтранаРегион]) > 10

Возвращает записи стран или регионов, длина названия которых превышает 10 символов.

Соответствуют заданному шаблону

Возвращает записи стран или регионов, названия которых состоят из пяти символов и начинаются с "Лив", например Ливия и Ливан.

Примечание: Символы ? и _ в выражении обозначают один символ. Они также называются подстановочными знаками. Знак _ ? * _ % .

Условия для числовых полей, полей с денежными значениями и полей счетчиков

Следующие примеры относятся к полю "ЦенаЗаЕдиницу", основанном на таблице, в которой хранится информация о товарах. Условие задается в строке Условие отбора поля на бланке запроса.

Чтобы добавить записи, которые...

Используйте это условие

Результат запроса

Точно соответствуют определенному значению, например 1000

Возвращает записи, в которых цена за единицу товара составляет 1000 ₽.

Не соответствуют значению, например 10 000

Возвращает записи, в которых цена за единицу товара не равна 10 000 ₽.

< 1000
<= 1000

Возвращает записи, в которых цена товара меньше 1000 ₽ (<1000). Второе выражение (<=1000) отображает записи, в которых цена не больше 1000 ₽.

>999,99
>=999,99

Возвращает записи, в которых цена товара больше 999,99 ₽ (>999,99). Второе выражение отображает записи, цена в которых не меньше 999,99 ₽.

Возвращает записи, в которых цена товара равна 200 или 250 ₽.

>499,99 and <999,99
или
Between 500 and 1000

Возвращает записи товаров с ценами в диапазоне от 499,99 до 999,99 ₽ (не включая эти значения).

<500 or >1000

Возвращает записи, в которых цена товара не находится в диапазоне от 500 до 1000 ₽.

Содержит одно из заданных значений

In(200, 250, 300)

Возвращает записи, в которых цена товара равна 200, 250 или 300 ₽.

Возвращает записи товаров, цена которых заканчивается на 4,99, например 4,99 ₽, 14,99 ₽, 24,99 ₽ и т. д.

Примечание: Знаки * и % в выражении обозначают любое количество символов. Они также называются подстановочными знаками. Знак % нельзя использовать в одном выражении с символом * , а также с подстановочным знаком ? . Вы можете использовать подстановочный знак % в выражении, где есть подстановочный знак _ .

Возвращает записи, для которых не введено значение в поле "ЦенаЗаЕдиницу".

Возвращает записи, в поле "ЦенаЗаЕдиницу" которых указано значение.

Условия для полей "Дата/время"

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

Записи

Используйте этот критерий

Результат запроса

Точно соответствуют значению, например 02.02.2006

Возвращает записи транзакций, выполненных 2 февраля 2006 г. Обязательно ставьте знаки # до и после значений даты, чтобы Access мог отличить значения даты от текстовых строк.

Не соответствуют значению, такому как 02.02.2006

Not #02.02.2006#

< #02.02.2006#

Чтобы просмотреть транзакции, выполненные в определенную дату или до нее, воспользуйтесь оператором <= вместо оператора < .

> #02.02.2006#

Чтобы просмотреть транзакции, выполненные в определенную дату или после нее, воспользуйтесь оператором >= вместо оператора > .

>#02.02.2006# and <#04.02.2006#

Кроме того, для фильтрации по диапазону значений, включая конечные значения, вы можете использовать оператор Between . Например, выражение Between #02.02.2006# and #04.02.2006# идентично выражению >=#02.02.2006# and <=#04.02.2006#.

<#02.02.2006# or >#04.02.2006#

#02.02.2006# or #03.02.2006#

Содержит одно из нескольких значений

In (#01.02.2006#, #01.03.2006#, #01.04.2006#)

Возвращает записи транзакций, выполненных 1 февраля 2006 г., 1 марта 2006 г. или 1 апреля 2006 г.

DatePart("m"; [ДатаПродажи]) = 12

Возвращает записи транзакций, выполненных в декабре любого года.

DatePart("q"; [ДатаПродажи]) = 1

Возвращает записи транзакций, выполненных в первом квартале любого года.

Возвращает записи транзакций, выполненных сегодня. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи, в поле "ДатаЗаказа" которых указано 2 февраля 2006 г.

Возвращает записи транзакций, выполненных вчера. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 1 февраля 2006 г.

Возвращает записи транзакций, которые будут выполнены завтра. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за 3 февраля 2006 г.

DatePart("ww"; [ДатаПродажи]) = DatePart("ww"; Date()) and Year([ДатаПродажи]) = Year(Date())

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

Year([ДатаПродажи])* 53 + DatePart("ww"; [ДатаПродажи]) = Year(Date())* 53 + DatePart("ww"; Date()) - 1

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

Year([ДатаПродажи])* 53+DatePart("ww"; [ДатаПродажи]) = Year(Date())* 53+DatePart("ww"; Date()) + 1

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

Between Date() and Date()-6

Возвращает записи транзакций, выполненных за последние 7 дней. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за период с 24 января 2006 г. по 2 февраля 2006 г.

Year([ДатаПродажи]) = Year(Now()) And Month([ДатаПродажи]) = Month(Now())

Возвращает записи за текущий месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за февраль 2006 г.

Year([ДатаПродажи])* 12 + DatePart("m"; [ДатаПродажи]) = Year(Date())* 12 + DatePart("m"; Date()) - 1

Возвращает записи за прошлый месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за январь 2006 г.

Year([ДатаПродажи])* 12 + DatePart("m"; [ДатаПродажи]) = Year(Date())* 12 + DatePart("m"; Date()) + 1

Возвращает записи за следующий месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за март 2006 г.

Between Date() And DateAdd("M", -1, Date())

Записи о продажах за месяц. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за период со 2 января 2006 г. по 2 февраля 2006 г.

Year([ДатаПродажи]) = Year(Now()) And DatePart("q"; Date()) = DatePart("q"; Now())

Возвращает записи за текущий квартал. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за первый квартал 2006 г.

Year([ДатаПродажи])*4+DatePart("q";[ДатаПродажи]) = Year(Date())*4+DatePart("q";Date())- 1

Возвращает записи за прошлый квартал. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за последний квартал 2005 г.

Year([ДатаПродажи])*4+DatePart("q";[ДатаПродажи]) = Year(Date())*4+DatePart("q";Date())+1

Возвращает записи за следующий квартал. Если сегодняшняя дата - 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 г.

Year([ДатаПродажи]) = Year(Date()) and Month([ДатаПродажи]) <= Month(Date()) and Day([ДатаПродажи]) <= Day (Date())

Возвращает записи транзакций, которые приходятся на период с 1 января текущего года до сегодняшней даты. Если сегодняшняя дата - 02.02.2006 г., вы увидите записи за период с 1 января 2006 г. по 2 февраля 2006 г.

Возвращает записи транзакций, выполненных до сегодняшнего дня.

Возвращает записи транзакций, которые будут выполнены после сегодняшнего дня.

Фильтр пустых (или отсутствующих) значений

Возвращает записи, в которых не указана дата транзакции.

Фильтр непустых значений

Возвращает записи, в которых указана дата транзакции.

Условия для полей "Да/Нет"

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

Значение поля

Результат

"Да", "Истина", 1 или -1

Проверено для значения "Да". После ввода значение 1 или -1 изменяется на "Истина" в строке условий.

"Нет", "Ложь" или 0

Проверено для значения "Нет". После ввода значение 0 изменяется на "Ложь" в строке условий.

Нет значения (null)

Не проверено

Любое число, отличное от 1, -1 или 0

Нет результатов, если это единственное значение условия в поле

Любая строка символов, отличная от "Да", "Нет", "Истина" или "Ложь"

Не удается выполнить запрос из-за ошибки несоответствия типов данных.

Условия для других полей

Вложения. В строке Условие отбора введите Is Null , чтобы включить записи, которые не содержат вложений. Введите Is Not Null , чтобы включить записи с вложениями.

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

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

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

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

    Найдите исходную таблицу в области навигации .

    Откройте таблицу в Конструкторе, сделав одно из следующего:

    • Щелкните таблицу и нажмите клавиши CTRL+ВВОД .

      Щелкните таблицу правой кнопкой мыши и выберите пункт Конструктор .

    Тип данных для каждого поля указан в столбце Тип данных на бланке таблицы.

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

    Создайте запрос, содержащий многозначное поле, и откройте его в Конструкторе.

    Разверните многозначное поле, щелкнув символ плюса (+ ) рядом с ним. Если поле уже развернуто, то выводится минус (- ). Под именем поля вы увидите поле, представляющее одно значение многозначного поля. Это поле будет иметь то же имя, что и многозначное поле, но к нему будет добавлена строка .Значение .

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

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

    Каждое значение в многозначном поле будет оцениваться по отдельности на основе указанных условий. Например, допустим, что в многозначном поле хранится список чисел. Если указать условия >5 AND <3 , будут выведены все записи, в которых есть по крайней мере одно значение больше 5 и одно значение меньше 3.

Сегодня мы начнем рассматривать такое приложение как — Microsoft Access 2003 , которое умеет создавать собственные базы данных (формат mdb ), а также создавать клиентские приложения к существующим базам на основе MS SQL Server. Темой сегодняшней статьи будет создание новых запросов из Access, имеется в виду, как простые запросы, так и различные функции, представления и процедуры. Под запросом здесь понимается объекты базы данных.

О Microsoft Access

Microsoft Access – программный продукт компании Microsoft, являющейся реляционной СУБД. Имеет огромные возможности при организации базы данных, создания отдельного приложения, которое может взаимодействовать с множеством других СУБД. Наиболее часто встречающееся решение клиент-сервер, где в качестве клиента выступает приложение, написанное в Access (язык VBA, формы и многое другое ), а сервером является СУБД Microsoft SQL Server. Однако Access поддерживает и взаимодействие с другими СУБД, например, такими как: MySql или PostgreSQL. О Access можно разговаривать долго, но цель сегодняшней статьи именно создание запросов (объектов ) из Access.

Переходим к практике и начнем с простой базы mdb, т.е. как там создать эти самые запросы.

Создание запросов в Microsoft Access 2003 — база MDB

Для начала открываем базу, затем нажимаем на объекты «Запросы» и жмем кнопку «Создать» .

Примечание! Имеется в виду, что база у Вас уже есть.

И перед Вами откроется новое окно выбора типа запроса

Давайте рассмотрим каждый из этих типов запросов подробней.

Типы запросов в Access 2003 — база MDB

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

Если не нравится это делать в графическом редакторе, то можете переключиться в режим SQL, для этого нажмите пункт меню «Вид» , затем «Режим SQL» .

Простой запрос – это, можно сказать, такой же конструктор, только немного другого вида и поменьше возможностей.

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

Повторяющееся записи – это как видно из названия поиск повторяющихся записей.

Записи без подчиненных – это поиск тех записей, которые отсутствуют в той или иной таблице.

С базами mdb достаточно, так как их редко используют на предприятиях, обычно используют следующую схему – пишут отдельный клиент, а все данные хранят на сервере с помощью СУБД в нашем случае — это MS SQL Server, а клиент Access (.adp).

Создание запросов в Microsoft Access 2003 — база MS SQL Server

Давайте рассмотрим создание новых запросов из клиента Access на базе MS SQL Server (подразумевается, что клиент adp и база данных на основе MS SQL Server у Вас уже есть ).

Примечание! Данная статья не подразумевает изучение sql, поэтому на момент прочтения этой статьи Вы уже должны понимать основы sql и понятие основных объектов в базе данных таких как: представление, функция, процедура. Если Вы совсем новичок в этом, то сначала, конечно же, рекомендуется освоить SQL, так как многие термины ниже Вам будут не понятны. Рекомендуемые статьи:

  • Что такое представления VIEWS в базах данных? И зачем они нужны?

Начало все такое же, открывает проект, затем нажимаем на объекты «Запросы» и жмем кнопку «Создать» .

И теперь подробней.

Типы запросов в Access 2003 — база MS SQL Server

Конструктор встроенной функции – это, можно сказать, обычное представление, только в нее можно передавать параметры, затем выполняются какие-то запросы на сервере, и возвращается таблица. Это своего рода функция, которая возвращает данные в виде таблицы. К ней обращаются следующим образом (если говорить об sql ):

SELECT * FROM my_test_tabl_func(par1, par2 ……)

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

Затем если Вы хотите добавить входящие параметры можете просто в условие ставить знак @ и название переменной, например, так:

SELECT * FROM table WHERE kod = @par

После на панели в свойствах функции

на вкладке «параметры функции» появится те параметры, которые Вы указали, причем передавать их нужно в том порядке, в котором они здесь указанны.

Конструктор представления – это создание обычного представления, в просто народе «Вьюха» .

Конструктор сохраненной процедуры – создание процедуры с помощью конструктора, принцип такой же, как и в вышеупомянутых функциях. Напомню процедура — это набор sql операторов, как на выборку, так и на изменение данных.

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

Ввод скалярной функции – это создание функции, которая возвращает значение. Создается с помощью текстового редактора.

Ввод табличной функции – это создание функции, которая вернет набор записей. Похожа на встроенную функцию.

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

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

Конечно же, все эти объекты Вы можете создать и на сервере с помощью, например, Enterprise Manager (устарел, сейчас SQL Server Management Studio ), но мы сегодня рассматриваем возможность создания этих объектов из access клиента.

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

Создание запросов к базе данных, это все равно, что отправка приказа на другом языке.

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

Язык запросов и условия отбора.

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

Это все равно, что дать библиотекарю задачу подобрать книжки на какую-то тематику, - тема будет критерием, раздел или стеллаж будет полем в котором будет осуществляться поиск.

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

> больше

< меньше

>= больше или равно

<= меньше или равно

<> неравно

Так же нужны логические функции:

AND – (И) если нужно, чтобы выполнялись сразу несколько условий

OR – (ИЛИ) если нужно чтобы выполнялось хоть одно условие

NOT – (НЕ) если нужно отобрать записи, исключив подходящие по критерию

Пример условия отбора к полю дата поступления может быть таким

Like 12.12.2016 - будут отобраны строчки таблицы в которых дата будет 12.12.2016.

<> 12.12.2016 - будут отобраны строчки таблицы в которых дата будет 11.12.2016 и раньше, 13.12.2016 и позже.

> 12.12.2016 - будет отобраны строки в которых дата начинается с 13.12.2016.

Если нам нужно усложнить отбор, то можно использовать логические функции И, ИЛИ и НЕ.

К примеру, если мы хотим выбрать дату поступления товара с 10.10.2015 до 12.12.2016, то если мы запишем >=10.10.2015, то будут отобраны даты и позже 12.12.2016, поэтому используем логическую функцию И.

>=10.10.2015 AND <= 12.12.2016

Как создавать запрос с помощью конструктора

1. Нажимаем на вкладку «Создать», а затем на кнопку «Конструктор запросов».

(Рисунок 1)

2. В окне «Добавление таблицы» выбираем таблицу и нажимаем «Добавить», а затем «Закрыть».

(Рисунок 2)

3. Выбираем имя таблицы или таблиц.

(Рисунок 3)

4. Выбираем имена столбцов, которые нам нужно получить в отчете о запросе.

(Рисунок 4)

5. Пишем условие выбора к полям (столбцам) таблицы, указывая критерий по которому будет производиться отбор.

(Рисунок 5)

6. Нажимаем серый крестик, чтобы закрыть конструктор запросов, если нужно записываем название запроса, нажимаем «ок»

(Рисунок 6)

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

(Рисунок 7)

Пример запроса.

Поиск товаров поступивших 12.09.2015 или в диапазоне дат между 01.01.2016 и 12.12.2016.

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

(Рисунок 8)

Если запрос не работает

1. Запрос введен правильно, но не работает, то либо таких данных нет, либо тип данных в данном столбце – текстовый.

2. Команды в запросе введены слитно, без пробелов.

3. Если очень много текста, а критерий точно задать нельзя, то можно использовать * (звездочку), которая означает любое количество символов. Так можно в тексте найти человека по фамилии *Иванов*. Так как поиск осуществляется по кодам символов, то текст должен полностью соответствовать. По запросу Like *Иванов* в итоговую таблицу попадут все Ивановичи, Ивановы, Поливановы, так как мы задали маску по которой будут отбираться записи (строчки таблицы) и легко видеть, что в фамилии Иванович есть некоторое количество символов после Иванов, а в фамилии Поливанов, есть некоторое количество символов до Иванов. Так же следует обратить внимание на кавычки, так как звездочки должны стоять до и после кавычек обозначающих, что внутри них текст - Like *”Иванов”*

4. Выбор типа запроса осуществляется на ленте конструктора - запрос на удаление, добавление, создание таблицы.

Приложение СУБД MS Access - это полноценный помощник для создания и ведения заключенных в таблицы и массивы. Если база имеет слишком большой объем, быстро найти необходимые значения довольно сложно.

Именно поэтому в Access существует такая функция, как запросы. Рассмотрим, что это такое, как работает, какие имеет особенности.

Создание запросов в Microsoft Access

Чтобы разобраться, как нужно знать основные положения работы с СУБД.

Существует два способа выполнить данную процедуру:

  • Конструктор запросов.
  • Мастер запросов.

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

Легкий путь для новичков

Знающий человек за несколько кликов мышью выбирает те компоненты, которые потребуются пользователю для выполнения запроса, а затем быстро формирует реестр, в соответствии с собранными ключевыми значениями. Если это первое знакомство с СУБД, и пользователь не представляет, как создавать запросы в Access, то выбирается программа Мастер.

В данном режиме можно ознакомиться и разобраться со следующими типами запросов:

  • Простой.
  • Перекрестный.
  • Записи без подчиненных.
  • Повторяющиеся записи.

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

Простой запрос

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

Перекрестный запрос

Этот тип выборки более сложный. Чтобы разобраться, как создать в Access с помощью "Мастера" в данном режиме, нужно кликнуть по этой функции в первом окне.

На экране появится таблица, в которой можно выбрать до трех столбцов, расположенных в оригинале.

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

На фото показано, что перекрестный запрос создан, и что по заданным параметрам совершены необходимые действия.

Повторяющиеся записи

Как понятно из названия, основное предназначение данного запроса - выборка всех одинаковых строк в таблице по указанным параметрам. Выглядит это так:

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

Чтобы выбрать повторяющиеся записи, нужно раскрыть список запросов и создать там новую папку. Далее в окошке "Новый запрос" выбрать строку "Поиск повторяющихся записей". Далее нужно следовать указаниям Мастера.

Записи без подчиненных

Это последний тип запросов, доступный в режиме "Мастер - Записи без подчиненных".

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

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

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

Функции запросов в MS Access

Разберемся, зачем нужно выполнять описанные выше действия. Задача всех простых и сложных запросов в СУБД Access заключается в следующем:

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

Запрос на выборку

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

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

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

В открывшемся окне конструктора заполняется окно «Добавление таблиц». Здесь нужно добавить те таблицы или запросы, из которых нужно вытаскивать исходные значения.

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

Чтобы завершить операцию, нужно нажать на кнопку "Выполнить".

Запрос с параметрами

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

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

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

Расширенный перекрестный запрос

Продолжаем усложнять ситуацию. Еще труднее для понимания является информация о том, как создавать запросы в Access, если присутствует несколько таблиц с данными. Перекрестный запрос уже рассматривался выше, как один из вариантов работы с Мастером. Однако, и в режиме "Конструктора" можно создавать подобный запрос.

Для этого необходимо нажать «Конструктор запросов» - «Перекрестный».

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

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

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

Конечно, присутствуют и «подводные камни», которые могут помешать в работе. Например, при создании запроса на сортировку базы данных по значению столбцов система выдает ошибку. То есть доступна только сортировка по стандартным пунктам - «возрастание и убывание».

Подводя итоги, нужно сказать, что решить, как создавать запросы в Access - с помощью Мастера или Конструктора, должен сам пользователь. Хотя, для большинства людей, которые используют СУБД MS Access, больше подойдет первый вариант. Ведь Мастер сам сделает всю работу, оставив для пользователя только несколько кликов мышью, при выборе условий запроса.

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

Есть один момент, который доступен лишь программистам. Так как основным языком СУБД является SQL, то нужный запрос можно написать в виде программного кода. Чтобы работать в данном режиме, достаточно нажать на строку уже созданного запроса, и в открывшемся контекстном меню выбрать «Режим SQL».

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

Запросы можно создавать самостоятельно и с помощь(о мастеров. Мастера запросов автоматически выполняют основные действия в зависимости от ответов пользователя на поставленные вопросы. Самостоятельно разработать запросы можно в режиме конструк­тора.

В Access можно создавать следующие типы запросов:

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

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

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

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

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

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

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

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

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

Для создания нового запроса надо в окне базы данных выбрать вкладку Запросы и щелкнуть по кнопке <Создать>. Откроется окно «Новый запрос».

В окне вы должны выбрать один из пяти пунктов:

    Конструктор,

    Простой запрос.

    Перекрестный запрос,

    Повторяющиеся записи.

    Записи без подчиненных.

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

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

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

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

У вас может возникнуть вопрос: как создавать запросы с параметрами и запросы на изменение, если при создании запроса они явно не указаны? Следует отметить, что основой для всех этих запросов является запрос на выборку, т.е. сначала необходимо определить набор данных, с которым хотите работать. Затем для созданного запроса на выборку надо перейти в режим конструктора. Задание параметров производится в строке Условия отбора для соответствующих полей. Подробнее это будет рассмотрено ниже при выполнении задания. Для доступа к запросам на изменение надо открыть пункт меню Запрос - в открыв­шемся списке вы увидите все виды запросов на изменение.

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

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

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

    на физическом носителе информации (обычно это жесткий диск) требуется меньший объем пространства;

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

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

Для сохранения запроса следует выполнить следующие действия. Выполните коман­ду Файл, Сохранить или щелкните по кнопке <Сохранить> на панели инструментов. Если вы впервые сохраняете запрос, введите новое имя запроса в диалоговом окне «Сохране­ние».

Запрос лучше всего создавать с помощью Конструктора (язык QBE). Для этого есть специальный значок в окне База данных . Он называется Создание запроса в режиме конструктора и открывает специальный окно в режиме языка QBE (см. рисунок 1). Окно состоит из двух частей. В верхней отображается структура таблиц, к которым запрос адресован, а нижняя область разбита на столбцы – по одному столбцу на каждое поле будущей результирующей таблицы.

Рис. 1 Окно создания запрос в режиме QBE

Памятка «Условия отбора»

Оператор

Описание

? Улица

Знак вопроса заменяет один символ

43 место*

Звездочка заменяет несколько символов, идущих после определенного слова

Значение меньше 100

Значение больше или равно 1

<>"Москва"

Все города кроме Москвы

Between 1 and 10

Значения между 1 и 10

Is Null Is Not Null

Находит пустые записи или находит все записи кроме пустых

Like "a*"

Все слова, начинающиеся с буквы а

>0 And <=10

Все значения большие 0 и меньшие 10

"Bob" Or "Jane"

Значения равные или Bob, или Jane