Как сделать условие на значение в access

Добавил пользователь Alex
Обновлено: 05.10.2024

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

В окне Добавление таблицы выделите таблицы (поочередно или сразу все с нажатой клавишей Shift для смежных или клавишей Ctrl для несмежных) и нажмите на кнопку Добавить.

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

Расставьте таблицы так, чтобы они позволяли видеть связи между таблицами (Рис. 13).

Рис. 13. Открытые таблицы для запроса

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

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

2. Подхватите поле из таблицы и перетащить его в столбец конструктора запросов (Рис. 14). Отпустите мышь.

Рис. 14. Перетаскивается поле Код_тура

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

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

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

Для примера создадим запрос Анализ продаж. Выберите следующие поля: Код_заказа, Дата, Наименование_тура, Цена, Количество, Название_фирмы, Город, Телефон, Скидка (Рис. 15).

Рис. 15. Конструктор запроса с выбранными полями

Для выполнения анализа и расчета нажмите на кнопку Конструктор → Выполнить. Укажите имя запроса. После этого результаты запроса будут выведены на экран (Рис. 16). Так как записей в таблице Запросы всего 100, то и в результатах запроса должно быть 100 записей.

Рис. 16. Результаты запроса Анализ продаж

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

В следующем запросе создайте те же самые поля, что и в предыдущем (Код_заказа, Дата, Наименование_тура, Цена, Количество, Название_фирмы, Город, Телефон, Скидка). Прокрутите список столбцов в Конструкторе запросов вправо так, чтобы был виден следующий (справа) пустой столбец. В верхнем поле этого пустого столбца введите следующую формулу:

[Цена]*(1-[Скидка])*[Количество]

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

Щелкните мышью в любом свободном поле, например, на 1 строчку ниже. Сразу после этого перед формулой появляется автоназвание этого поля: Выражение1. Формула и автоназвание разделены между собой символом двоеточия. Выделите мышью текст автоназвания (двоеточие или символы формулы ни в коем случае выделять не нужно). Введите вместо него заголовок поля К оплате. Выполните команду Конструктор → Выполнить (кнопка в виде восклицательного знака). Укажите имя запроса (Анализ продаж с оплатой).

В списке таблиц (в левой части рабочего окна Access ) выделите последний запрос, щелкните по нему правой клавишей мыши и из открывшегося контекстного меню выполните команду Конструктор. Выделите столбец с формулой и удалите эту формулу. Обратите внимание, что в предыдущем примере мы создавали формулу с участием полей. Эти поля мы указывали в формуле вручную. Это очень опасный способ, так как ошибка в одной букве названия поля или символе приведет к неработоспособности всей формулы, а вместе с формулой и всего запроса. Поэтому формулы обычно создают с помощью Построителя выражений. Для этого в первом поле столбца щелкните правой клавишей мыши и из открывшегося контекстного меню выполните команду Построить. После этого открывается окно Построитель выражений (Рис. 17).

Рис. 17. Создание формулы с помощью построителя

В левом списке находятся все объекты БД. Откройте группу Таблицы. Откройте таблицу Туры: список полей таблицы выводятся в средней части построителя. Двойным щелчком включите поле Цена в формулу. Квадратные скобки и имя таблицы включаются в формулу автоматически. Одиночным щелчком вставьте символ умножения (*). Вставьте открывающуюся круглую скобку. Введите с клавиатуры цифру 1. Вставьте символ вычитания (-). В списке таблиц щелкните по таблице Клиенты. Двойным щелчком включите поле Скидка в формулу. Вставьте закрывающуюся круглую скобку. Вставьте символ умножения (*). В списке таблиц щелкните по таблице Заказы. Двойным щелчком включите поле Количество в формулу. Нажмите на кнопку ОК. В созданной формуле с клавиатуры потребовалось ввести только цифру 1 — все остальные объекты (поля, операторы и даже скобки) выбирались готовыми: чем меньше потребуется ручного ввода, тем меньше ошибок будет в формуле.

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

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

Для создания следующего запроса откройте конструктор запросов (команда Создание → Конструктор запросов). В предыдущих примерах мы в качестве исходных данных использовали вкладку Таблицы в окне Добавление таблицы. Запрос Анализ продаж является компиляцией из всех 4-х таблиц. Поэтому использовать таблицы в следующем запросе не обязательно. В окне Добавление таблицы перейдите на вкладку Запросы и добавьте запрос Анализ продаж в исходные данные создаваемого запроса. Включите в новый запрос следующие поля: Код_заказа, Дата, Наименование_тура, Название_фирмы, Город, Телефон. В столбце с полем Город найдите поле Условие отбора. Введите в это поле Волгоград. Щелкните мышью в любом соседнем поле (лучше пустом): название города будет автоматически заключено в парные кавычки. Данная операция не является обязательной: просто здесь объясняется, откуда берутся кавычки — они устанавливаются автоматически. Поэтому нет никакого смысла вводить их вручную. В столбце с полем Наименование_тура в поле Условие отбора введите Стамбул (Рис. 18). Выполните команду Конструктор → Выполнить. Сохраните запрос под именем Анализ по регионам (Рис. 19).

Рис. 18. Параметры запроса Анализ по регионам

Рис. 19. Результаты запроса Анализ по регионам

Откройте запрос Анализ по регионам в режиме Конструктора. Измените Волгоград на Ижевск. Наименование_тура измените из Стамбул на Мальорка. Выполните запрос, убедитесь в правильности работы запроса. Самостоятельно выберите Город и Наименование_тура и выполните запрос.

В предыдущем запросе мы указывали условия отбора записей в теле Конструктора. Кроме этого имеется возможность выбора условий непосредственно при работе с запросом. Такие запросы называются параметрическими. Условия поиска указываются не в кавычках, как мы это делали в предыдущем запросе, а в квадратных скобках, причем указывать нужно не конкретное значение, а вопрос (Рис. 20). Например, в предыдущем примере мы в качестве параметра поиска указывали город Волгоград. В параметрическом запросе нужно ввести между квадратными скобками: Введите город. Выполните запрос. Укажите имя запроса Анализ по регионам-П. Введите параметры в окно Введите значение параметра (Рис. 21). Нажмите на кнопку ОК. Укажите следующий параметр (так как в нашем запросе имеются 2 условия в квадратных скобках).

Рис. 20. Параметрический запрос

Рис. 21. Ввод параметра

Сравните 2 запроса, созданные по-разному, но выдающие один и тот же результат.

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

Откройте Конструктор запросов. В качестве исходных данных используйте таблицу Клиенты. Выберите поля Название_фирмы, Город, Индекс, Адрес и Телефон. Для поля Город выберите условие: Пенза (Рис. 22). Выполните запрос. Сохраните запрос под именем Фирмы Пензы.

Рис. 22. Параметры для запроса по фирмам Пензы

Откройте Конструктор запросов. Откройте таблицу Сотрудники. Выберите следующие поля: ФИО и Стаж. Для поля Стаж укажите условие отбора (Рис. 23):

Выборка по стажу

Рис. 23. Выборка по стажу

Откройте Конструктор запросов. Откройте таблицу Сотрудники. Выберите следующие поля: ФИО, Дата_рождения. Дополнительно в следующем поле введите формулу с помощью построителя:

DateDiff("d";[Сотрудники]![Дата_рождения];Now())

Функция DateDiff выбирается в группе Функции → Встроенные функции → Дата/время. Эта функция позволяет определить разницу между двумя датами. Синтаксис этой функции следующий (обязательные аргументы):

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

interval — единица измерения расчета. Значение d, например, измеряет разницу в днях. Значение заключается в парные кавычки.

date1, date2 — даты, участвующие в расчете. Из date2 вычитается date1.

Остальные аргументы необязательные.

Аргумент date1 это дата рождения сотрудника. Аргумент date2 это текущая дата. Функция текущей даты и времени называется Now(). У функции нет аргументов, так как текущая дата берется из системной даты. Назовите это поле Возраст.

Возраст измеряется в днях. Поэтому у 25-летнего сотрудника возраст будет 25*365=9125 дней (Рис. 24). Сохраните запрос под именем Сотрудники старше 25 лет (Рис. 25).

Рис. 24. Выборка по возрасту

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

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

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

DateDiff("d";[Дата_рождения];Now())/365

Условие отбора измените на 25. Выполните запрос: теперь в поле Возраст находится много символов решетки: увеличьте ширину этого поля, чтобы увидеть результат. Теперь результат действительно выводится в годах, но с множеством знаков после запятой. Знаков может быть так много, что они могут даже не поместиться по ширине монитора. Поэтому это число нужно как то ограничить. Снова войдите в Конструктор и Построитель. Функция округления называется ROUND. В качестве обязательного аргумента нужно указать саму формулу, которую нужно округлить. Если число знаков после запятой не указано, то число округляется до целого. Поэтому укажем, что округлять нужно до 1 знака после запятой:

Round (( DateDiff (" d ";[Дата_рождения]; Now ())/365);1)

Закройте построитель, выполните запрос. Возможен запрос с отключенным расчетным полем Возраст.

Откройте Конструктор запросов. Откройте таблицу Клиенты. Выберите следующие поля: Название_фирмы, Код_агента, Скидка. Для поля Скидка укажите условие отбора: 0. Выполните запрос. Сохраните запрос под именем Клиенты без скидки.

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

То есть здесь указывается: не равно 0. Еще один способ: выделите пустую строку с условием отбора. Вызовите Построитель. Нажмите на кнопку Not, то есть Нет (или Не). Введите с клавиатуры 0. Нажмите на кнопку ОК. В условии отбора будет выведено:

Not 0

То есть в формуле указано: не 0. Выполните запрос.

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

Откройте Конструктор запросов. Откройте таблицу Заказы. Выберите следующие поля: Месяц, Дата, Количество, Код_тура.

Between Выражение And Выражение

(Date()-7)

Функция Date() вводится также из списка функций даты и времени: вручную вводится только цифра 7, так как минус также вставляется из списка операторов. В какой последовательности указывать искомый диапазон не имеет никакого значения. То есть можно указать так:

Between (Date()-7) And Date()

Between Date() And (Date()-7)

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

Откройте Конструктор запросов. Откройте таблицы Заказы и Клиенты. Из таблицы Клиенты выберите следующие поля: Название_фирмы, Телефон. Из таблицы Заказы выберите поле Дата. В условиях отбора записей в поле Дата с помощью Построителя создайте выражение:

Date()-1

Откройте Конструктор запросов. Откройте таблицы Заказы, Клиенты и Туры. Из таблицы Заказы выберите поля Месяц и Количество. Из таблицы Туры выберите поле Тип_тура. Из таблицы Клиенты выберите поле Город.

Введите условия отбора: в Месяц — Апрель; Тип_тура — Россия; Город — Пенза. В одном и том же месяце может быть несколько записей, удовлетворяющим условиям запроса. Например, в августе месяце из Пензы тысячи людей уезжают на отдых в Сочи. Если сейчас запустить созданный запрос, то может оказаться, что по одному туристическому направлению может оказаться несколько записей. Суммировать общее значение придется вручную. Чтобы указать программе, что найденные одинаковые количества путевок нужно суммировать, а результат выводить одной строкой, необходимо выполнить следующие действия: Щелкните правой клавишей мыши в любой свободной ячейке любого столбца, даже пустого. Выполните команду Итоги. Между строками Имя таблицы и Сортировка появится еще одна строка, которая называется Групповая операция. В каждом непустом столбце появляется значение Группировка. В поле Количество щелкните по значению Группировка. После этого в правой части ячейки появляется миниатюрная треугольная кнопочка. Нажмите на нее и в открывшемся списке выберите значение Sum , то есть суммирование строк с одинаковыми значениями.

Несмотря на кажущуюся простоту это сложный запрос. Откройте Конструктор запросов. Откройте таблицы Заказы, Сотрудники и Туры. Из таблицы Сотрудники выберите поле ФИО. Из таблицы Заказы выберите поле Месяц. Из таблицы Туры ничего выбирать не нужно: в этом то вся сложность и необычность запроса. Дело в том, что мы собираемся рассчитать объем продаж, а для этого нужно знать 2 аргумента: Количество и Цена. Аргумент Количество можно взять из таблицы Заказы. А вот аргумент Цена находится в таблице Туры, поэтому эта таблица должна быть открыта. Если в предыдущих запросах мы использовали поля в явном виде, то здесь мы впервые используем поле в неявном виде, в данном случае — в формуле. Если таблица Туры не будет открыта, то программа не сможет прочитать цены туров и попытается это выяснить в окне, похожем на параметрический.

Sum([Заказы]![Количество]*[Туры]![Цена])

Нажмите на кнопку ОК. Выделите автоназвание поля Выражение1 и вместо него введите название Продажи.

Функция IIF в запросах Access

Синтаксис функции IIF: IIf (условие; если истина; если ложь).
1 аргумент — наше условие. Если это условие выполняется, то функция IIF в запросах Access вернет значение второго аргумента, если же условие не выполняется, то функция IIF в запросах Access вернет значение третьего аргумента.

Функция IIF в запросах Access

Функция IIF в запросах Access


Рассмотрим 1 пример.
У нас есть таблица СТУДЕНТЫ, известно, что некоторые студенты получают стипендию. Предположим, что сумма базовой стипендии 5000 руб.

Функция IIF в запросах Access

Создадим такой запрос, который начислит 5000 руб тем студентам, кто получает стипендию, а всем остальным — 0!
Перейдем в конструктор запросов, нам понадобится дополнительное вычисляемое поле, а также функция IIF в запросах Access.

Функция IIF в запросах Access

Функция IIF в запросах Access

Результат запроса с функцией IIF представлен ниже:

Функция IIF в запросах Access

Рассмотрим 2 пример.
Для 2 примера необходимо в таблицу СТУДЕНТЫ добавить новое логическое поле МЕДАЛЬ.

Функция IIF в запросах Access

Студентам, которые имеют стипендию и медаль начислим 7000 рублей, у кого просто стипендия — 5000 руб, остальным -0!
Снова нам поможем функция IIF в запросах Access.

Функция IIF в запросах Access

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

Функция IIF в запросах Access

Функция IIF в запросах Access

Функция IIF в запросах Access

Рассмотрим 3 пример.
Работаем с таблицей ПРЕПОДАВАТЕЛИ. Мы знаем, сколько получает каждый преподаватель и знаем, сколько у него детей.

Сделаем так, чтобы преподавателям, у которых больше 2 детей, начислялась надбавка 10000 рублей, тем у кого от 1 до 2 детей — 5000 рублей, у кого нет детей — 0!

Функция IIF в запросах Access

Функция IIF в запросах Access

Хотите больше примеров, где разбирается функция IIF в запросах Access? Переходите по ССЫЛКЕ.

Функция IIF в запросах Access

Если вам нужна готовая база данных Access, то ознакомьтесь со списком представленным ЗДЕСЬ.

третье поле - ненужно

Задание: Необходимо ввести условие на значение для таблицы: если "Оценка" равна 2, 3, 4, или 5, то значение поля "Зачёт" - Ложь.

Перечитал справку на сайте Microsoft по Access 2003 с примерами по функции IIf, так ничего и не получилось. Запрос вида: IIf( [Оценка] = 2 Or [Оценка] = 3 Or [Оценка] = 4 Or [Оценка] = 5, [Зачёт] = Ложь, [Зачёт] = Истина ) выдаёт ошибку "Ошибка синтаксиса во введённом выражении. Задано значение для операции без оператора".

а что такое "формат логическому полю" ?

2. Значение по умолчанию для поля отметка - 0
3. Тогда условие на значение для таблицы (Зачет - поле Sign):

я исхожу из "буквы" задания, в котором говорится
а) о таблице (НЕ о запросе)
б) о такой характеристике таблицы (поля таблицы) как "условие на значение"

и с помощью этого "Дано", ТСу нужно реализовать - " если "Оценка" равна 2, 3, 4, или 5, то значение поля "Зачёт" - Ложь."

я "клоню")) к тому, что это ("нужно реализовать") на заданных условиях (в таблице, через "условие на значение"), ТС - не удастся
щас даже не говорим о том, что это неправильно с точки зрения нормализации

НО, если ТС - счастливый обладатель А2010 - то он может использовать "вычисляемое поле" (Зачёт), т.е. игнорируется только п.б) условия

Вы же, с nord-woolf -ом, "агитируете" автора на запрос (не важно с доп.таблицей или без),
т.е. - "игнорите" ещё и требование а) условия

2. Значение по умолчанию для поля отметка - 0
3. Тогда условие на значение для таблицы (Зачет - поле Sign):



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

Запрос — объект БД, который используется для реализации эффективного поиска и обработки данных.

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

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

Запрос на выборку позволяет:

1. Просматривать значения только из полей, которые вас интересуют.
2. Просматривать записи, которые отвечают указанным вами условиям.
3. Использовать выражения в качестве полей.

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

Основные режимы работы с запросами в Access:

1. Режим таблицы. Отображает информацию запроса на выборку в режиме таблицы.

2. Конструктор. В этом режиме определяется структура запроса и условия выбора данных (см. Приложение к главе 1).

Создать запрос можно с помощью Мастера запросов либо в Конструкторе (пример 5.2).

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

Основные этапы создания запроса на выборку:

1. Выбор инструмента создания запроса.
2. Определение вида запроса.
3. Выбор источника(ов) данных.
4. Добавление из источника(ов) данных полей, которые должен содержать запрос.
5. Определение условий, которые формируют набор записей в запросе.
6. Добавление группировки, сортировки и вычислений (может отсутствовать).

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

Примеры записи условий в запросах:

Действие в запросе

Поля с числовым типом данных

Выбираются записи, у которых значение в этом поле больше 0 и меньше 8.

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

Поля с текстовым типом данных

Если значение в поле записи равно Орша, то запись включается в результат запроса.

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

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

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

В режиме конструктора процесс создания запроса находится под вашим контролем, однако здесь есть вероятность допустить ошибку и необходимо больше времени, чем в мастере (пример 5.4).

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

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

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

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

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


Пример 5.1. Режимы работы с запросами.


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

SQL (англ. structured query language — язык структурированных запросов). Применяется для создания, редактирования и управления данными в реляционной базе данных.

Пример 5.2. Группа инструментов Запросы вкладки Создание.


Пример 5.3. Создание запроса на выборку с помощью Мастера запросов.


1. Выбрать инструмент .

2. Выбрать вид запроса.


3. Выбрать источник данных.


4. Задать поле, содержащее повторяющееся значение.


5. Выбрать поля для отображения вместе с повторяющимися значениями.


6. Просмотреть и/или сохранить запрос.


Пример 5.4. Создание простых запросов на выборку с помощью Конструктора запросов.

1. Выбрать инструмент


2. Выбрать источник данных.


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


4. Записать условие формирования набора записей в запросе.

4.1. Выбор по полю с текстовым типом данных.





4.2. Выбор по полю с числовым типом данных.



4.3. Использование составного условия.





5. Сохранить запросы.

Пример 5.5. Создание запроса с параметрами.

1. Открыть один из запросов, созданных в примере 5.4 в конструкторе.

2. Изменить условия отбора на:


3. Сохранить с новым именем и открыть в режиме таблицы.

4. В диалоговом окне набрать одно из названий кинотеатра.


5. Просмотреть запрос.


Пример 5.6. Создание итогового запроса.

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




4. Добавить вычисляемое поле (в строке нового поля Групповая операция в списке выбрать функцию Count).

Здравствуйте. У меня в бд есть две таблицы:
1) Дома. Поля: id, дата постройки, дата сноса;
2) Жильцы. Поля: id, id_дом, дата заселения.
Как в бд поставить такое ограничение, чтобы в поле дата заселения по выбранному дому можно было вводить только дату между датой постройки и датой сноса?

Нет, это не то. Мне не нужен ввод в определенном формате, мне нужно введенное значение проверить на условие:
(Жильцы.[дата заселения]>=Дома.[дата постройки]) and (Жильцы.[дата заселения]

Попробовал для поля дата заселения ввести условие на значение >[Таблицы]![Дома]![дата_постройки] , но при сохранении Access ругается, что не может найти поле Таблицы]![Дома]![дата_постройки .

Здравствуйте Сергей089.
Ответ на вопрос "..есть две таблицы .. Как .. поставить .. ограничение. " в Вашем случае - никак.

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

Успехов Вам.
Евгений.

Спасибо Teslenko_EA, но с формой не интересно. А если человек полезет заполнять прямо в таблицу значения, то потом будут разные нестыковки. Нашел похожую тему Creating a Table with a Validation Rule Referencing a Column in Another Table и переписал под себя запрос:

Условие moe_ogranichenie работает, только я его нигде найти не могу , и оно не дает удалить таблицы (но мне и не нужно ничего удалять).
Прикрепил то, что получилось.

Сергей089, Вы конечно правы предикат CONSTRAINT который можно применять для установления связи с другой таблицей,
и ограничения на одно или несколько полей, в MS Access существует.
Но то-ли потому что MS Jet не поддерживает использование инструкции CONSTRAINT вне Jet ядра,
то-ли потому что предложение CONSTRAINT используется только в инструкциях ALTER TABLE и CREATE TABLE,
т.е. не поддерживается мастером запросов MS Access, он почти не применяется.
(зря ведь на него можно возложить часть функций отсутствующего триггера)

При создании (CREATE) или изменении (ALTER) таблиц в SQL конструкцию
можно добавлять (или удалять) предложение CONSTRAINTэто хорошо,
есть надежда на возможность возвращения таблицы в разряд удаляемых.
"..нигде найти не могу.." - вот оно проявление отсутствия мастера,
(для многих пользователей MS Access это не преодолимая преграда)

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

Здравствуйте Сергей089.

Абсолютно согласен с Евгением и готов подписаться под его словами.
Считаю ". лазить заполнять прямо в таблицу. " чрезвычайно неразумно!
В этом случае практически невозможен мониторинг и контроль действий пользователя и целостности данных!
И Ваш вопрос тому пример. Столько "телодвижений" для задачи, которая гораздо проще решается стандартными методами.
Разве только чисто из "спортивного" интереса.

Это был SQL запрос. Как использовать использовать Построитель выражений я не знаю. Я сделал через запрос.
Таблицы такие:

Поставки
ключ id_поставки Счетчик
Цена поставки Числовой
код_продукции Числовой

Продукция
ключ id_продукции Счетчик
Себестоимость Числовой

Для этого нужно зайти в Сервис->Параметры на вкладку "Таблицы и запросы" и поставить галочку в "Синтаксис для SQL Server". Затем создать запрос в режиме конструктора, никаких таблиц добалять не нужно. На запросе вызвать контекстное меню и выбрать "режим SQL". Вставить код:

Сохранить и выполнить запрос. Теперь должно работать ограничение "moe_ogranichenie". Чтобы его удалить нужно выполнить запрос

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