Создание запросов в базах данных access

Содержание:

Назначение и способы создания отчетов в ms Access,

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

СУБД
MS
Access
позволяет получить отчеты всевозможных
типов. Наиболее распространенными
являются отчеты табличного типа с
группированием и без.

Для создания
отчетов, как и для создания форм существует
несколько способов:

— автоотчет;

— мастер отчетов;

— конструктор
отчетов.

ПримечанияRemarks

Вы можете использовать вложенный запрос вместо выражения в списке полей оператора SELECT или предложении WHERE или HAVING.You can use a subquery instead of an expression in the field list of a SELECT statement or in a WHERE or HAVING clause. Во вложенном запросе вы используете оператор SELECT для предоставления набора одного или нескольких определенных значений для оценки в выражении для предложения WHERE или HAVING.In a subquery, you use a SELECT statement to provide a set of one or more specific values to evaluate in the WHERE or HAVING clause expression.

Используйте предикат ANY или SOME, которые являются синонимами, для получения записей в основном запросе, который удовлетворяет сравнению с любыми записями, полученными во вложенном запросе.Use the ANY or SOME predicate, which are synonymous, to retrieve records in the main query that satisfy the comparison with any records retrieved in the subquery. Следующий пример возвращает все продукты, для которых цена за единицу выше, чем у любого продукта, продаваемого со скидкой 25 процентов или более:The following example returns all products whose unit price is greater than that of any product sold at a discount of 25 percent or more:

Используйте предикат ALL для получения записей в основном запросе, который удовлетворяет сравнению со всеми записями, полученными во вложенном запросе.Use the ALL predicate to retrieve only those records in the main query that satisfy the comparison with all records retrieved in the subquery. Если вы изменили предикат с ANY на ALL в предыдущем примере, запрос будет возвращать только те продукты, у которых цена за единицу больше, чем у всех продуктов, проданных со скидкой 25 процентов или более.If you changed ANY to ALL in the previous example, the query would return only those products whose unit price is greater than that of all products sold at a discount of 25 percent or more. Это гораздо более строгое ограничение.This is much more restrictive.

Используйте предикат IN для получения только тех записей в основном запросе, для которых определенная запись во вложенном запросе содержит одинаковое значение.Use the IN predicate to retrieve only those records in the main query for which some record in the subquery contains an equal value. В примере ниже возвращаются все продукты со скидкой 25 процентов или больше:The following example returns all products with a discount of 25 percent or more:

С другой стороны, вы можете использовать NOT IN для получения только тех записей в основном запросе, для которых ни одна запись во вложенном запросе не содержит одинаковое значение.Conversely, you can use NOT IN to retrieve only those records in the main query for which no record in the subquery contains an equal value.

Используйте предикат EXISTS (с необязательным зарезервированным словом NOT) в сравнениях ИСТИНА/ЛОЖЬ, чтобы определить, возвращает ли вложенный запрос какие-либо записи.Use the EXISTS predicate (with the optional NOT reserved word) in true/false comparisons to determine whether the subquery returns any records.

Также можно использовать псевдонимы имени таблицы во вложенном запросе для ссылки на таблицы, указанные в предложении FROM за пределами вложенного запроса.You can also use table name aliases in a subquery to refer to tables listed in a FROM clause outside the subquery. Пример ниже возвращает имена сотрудников, чья заработная плата равна или выше средней заработной платы всех сотрудников на аналогичной должности.The following example returns the names of employees whose salaries are equal to or greater than the average salary of all employees having the same job title. Для таблицы «Сотрудники» присваивается псевдоним «T1»:The Employees table is given the alias «T1»:

В приведенном выше примере зарезервированное слово AS не является обязательным.In the preceding example, the AS reserved word is optional.

Некоторые вложенные запросы поддерживаются в перекрестных запросах, в частности, в качестве предикатов (например в предложении WHERE).Some subqueries are allowed in crosstab queries— specifically, as predicates (those in the WHERE clause). Вложенные запросы в виде выходных данных (в списке SELECT) не поддерживаются в перекрестных запросах.Subqueries as output (those in the SELECT list) are not allowed in crosstab queries.

Общие положения.

Запрос-выборка это производная таблица, которая содержит те же структурные элементы, что и обычная таблица (столбцы-поля и строки), и формируется на основе фактических данных системы.

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

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

  1.  указать, какиеполя и из каких таблиц надо включить в запрос;
  2.  описатьвычисляемыеполя, т.е. поля, значения которых являются функциями значений существующих полей (например, стоимость=цена*количество)
  3.  описать групповые операции над записями исходных таблиц (например, нужно ли объединить группу записей с одним и тем же кодом клиента в одну и просуммировать стоимость заказанной им продукции)%
  4.  указать условие отбора, т.е. сформулировать логическое выражение, которое позволит включить в выборку только записи, удовлетворяющие какому-либо условию (например, с датой поставки от 1 до 31 марта 2002 года).

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

Определение критериев, которые должен искать наш запрос

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

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

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

Чтобы писать запросы, вам нужно будет установить критерии на языке, который понимает Access . Как вы можете видеть на изображении выше, наши критерии, требующие номеров телефонов, начинаться с 919, должны быть напечатаны следующим образом: Like («919 *») . Чтобы узнать, как писать дополнительные критерии, обратитесь к нашему Краткому справочному руководству по критериям критериев запроса в разделе « Дополнительно » этого руководства. Руководство содержит несколько наиболее часто используемых критериев в запросах Access.

Создание запроса в режиме Конструктор.

В конструкторе можно создать запрос вручную. Для создания нового запроса надо выбрать объект базы данных ЗапросыСоздать и далее в диалоговом окне Новый запрос выбрать режим создания запроса Конструктор (рис 4.1).

Добавление таблиц в запрос.

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

Рис. 4.11. Диалоговое окно Добавление таблицы.

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

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

После закрытия диалогового окна Добавление таблицы, открывается окно конструктора. На рис. 4.12 показано такое окно с добавленными таблицами Клиенты, поставки и Продукты, с отображением установленных ранее связей.

Примечание. Если таблицы в запросе не объединены, то Access создаст полное объединение, содержащие все возможные комбинации, т.е. объединит все записи всех таблиц. Например, для двух несвязанных таблиц из 10 и 20 записей, запрос БУДЕТ содержать 200 записей.

Рис. 4.12. Создание нового Запроса в режиме Конструктор.

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

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

Для создания запроса нам потребуются следующие поля:

  •  Из таблицы Поставки КодПоставки, Дата, Объем
  •  Из таблицы Продукты Продукты
  •  Из таблицы Клиенты Клиент.

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

Рис. 4.12. Пример добавления полей в бланк запроса.

Добавление вычисляемых полей.

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

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

Добавим вычисляемое поле в запрос Поставки. Для вычисления стоимости заказа в поле последнего столбца введем (см. рис. 4.13):

Стоимость_заказа: *

Рис. 4.13. Пример добавления вычисляемого поля в бланк запроса.

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

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

Для задания порядка сортировки в строке Сортировка бланка запроса открывается список и выбирается По возрастанию или По убыванию (рис 4.14). Данные сортируются в соответствии со стандартными правилами.

Рис. 4.14. Задание порядка сортировки.

На рис. 4.15 приведен выполненный запрос с сортировкой поля Дата по возрастанию

Рис. 4.15. Запрос Поставки с сортировкой по возрастанию Даты.

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

Выполнение запроса.

После создания запроса и установки всех его параметров запрос можно выполнить (меню Запрос — команда Запуск). Запрос отбирает данные и отображает результаты в динамическом наборе.

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

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

Сохранение и печать запросов.

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

2.4. Microsoft Access 2007

2.4.5. Создание запросов и поиск информации в базе данных

В СУБД Access 2007 можно создавать queries для отображения требуемых полей из записей одной или нескольких таблиц.

В СУБД Access 2007 применяются различные типы запросов: на выборку, на обновление, на добавление, на удаление, перекрестный query, выполнение вычислений, создание таблиц. Наиболее распространенным является query на выборку. Применяются два типа запросов: query по образцу (QBE) и query на основе структурированного языка запросов (SQL).

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

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

На скриншоте (рисунок 1) средства сортировки и фильтрации выделены скругленным прямоугольником красного цвета.


Рис. 1.

Рассмотрим создание запроса на выборку с помощью Конструктора

Для создания нового пустого запроса в режиме конструктора надо щелкнуть на пиктограмме Конструктор запросов (рисунок 2).


Рис. 2.

Откроется активное окно диалога Добавление таблицы (рисунок 3) на фоне неактивного окна «Запрос1». В этом окне можно выбрать таблицы и queries для создания новых запросов.

Рис. 3.

В окне Добавление таблицы следует выбрать несколько таблиц из представленного списка таблиц, на основе которых будет проводиться выбор данных, и щелкнуть на кнопке Добавить. После этого закрыть окно Добавление таблицы, а окно «Запрос1» станет активным (рисунок 4).


Рис. 4.

Окно Конструктора состоит из двух частей – верхней и нижней. В верхней части окна размещается схема данных запроса, которая содержит список связанных таблиц. В нижней части окна находится Бланк построения запроса QBE, в котором каждая строка выполняет определенную функцию.

Переместим имена полей с таблиц-источников в Бланк. Из таблицы Группы студентов переместим поле Название в первое поле Бланка, из таблицы Студенты переместим поле Фамилии во второе поле, а из таблицы Успеваемость переместим поле Оценка в третье поле и из таблицы Дисциплины переместим поле Название в четвертое поле Бланка запросов.

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

Условия ограниченного поиска или критерий поиска информации вводится в строке «Условия» отбора и строке «Или». Например, введем критерий поиска — «5/A» в строке «Условия» для поля Оценка. В этом случае в результате выполнения запроса на экране будут отображаться все фамилии студентов, которые получили оценку 5/A (рисунок. 5).


Рис. 5.

Далее надо закрыть окно запроса Запрос1, появится окно диалога Сохранить, ответить — Да и ввести имя запроса, например «Успеваемость студентов». Для запуска запроса дважды щелкнем на query «Успеваемость студентов», откроется таблица с результатами выполненного запроса (рис. 6).


Рис. 6.

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

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


Рис. 7.

Затем надо щелкнуть на кнопке ОК, откроется таблица с результатами выполненного запроса (рис. 8).


Рис. 8.

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

Далее >>> Раздел: 2.4.6. Создание форм для ввода данных в таблицы базы данных Access 2007

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

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

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

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

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

Формирование сложных запросов к готовой базе данных

  • Главная | Информатика и информационно-коммуникационные технологии | Планирование уроков и материалы к урокам | 8 классы | Планирование уроков на учебный год | Формирование сложных запросов к готовой базе данных
  • Приобретаемые умения и навыки: — Формирование запросов с использованием логических операций.
  • — Создание вычисляемых полей.

Задание 1 (однотабличная БД)

1. Открыть БД «Абитуриент.mdb»

Заготовка для практических работ по БД у авт. Семакина в формате для Access.mdb Base — Абитуриент.mdb

Открыть БД    «Абитуриент.mdb»

Заготовка для практических работ по БД у авт. Семакина в формате для OO.org Base — Абитуриент.odb

Открыть БД    «Абитуриент.odb»

2. Создать запрос для выбора фамилии, имени и школы для всех абитуриентов, окончивших школы 44 и 59.

3. Создать запрос для выбора всех абитуриентов, не учившихся на подготовительных курсах и получивших «двойку» на экзамене по математике или информатике (вывести все поля таблицы).

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

5. Создать запрос для выбора фамилии и даты рождения юношей-абитуриентов, родившихся в 1990 году.

6. Создать запрос для выбора фамилии и всех оценок абитуриентов, набравших сумму баллов не менее 13.

Задание 2 (многотабличная БД)

1. Открыть БД    «Абитуриент1.mdb»

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

3. Создать запрос для вывода на экран фамилии, факультета и суммы баллов для абитуриентов, набравших в сумме более 12 баллов за три экзамена.

4. Создать запрос для вывода на экран фамилии, факультета, оценки за 1 экзамен, оценки за 2 экзамен, оценки за 3 экзамен для всех абитуриентов, у которых оценка за 3 экзамен выше среднего балла за все экзамены.

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

Недостатки

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

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

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

СинтаксисSyntax

Вы можете использовать три формы синтаксиса для создания вложенного запроса:You can use three forms of syntax to create a subquery:

сравнение (sqlstatement)comparison (sqlstatement)

выражение IN (sqlstatement)expression IN (sqlstatement)

EXISTS (sqlstatement) EXISTS (sqlstatement)

Вложенный запрос состоит из следующих частей:A subquery has these parts:

ЧастьPart

ОписаниеDescription

сравнениеComparison

Выражение и оператор сравнения, который сравнивает выражение с результатами вложенного запроса.An expression and a comparison operator that compares the expression with the results of the subquery.

выражениеexpression

Выражение, для которого выполняется поиск по набору результатов для вложенного запроса.An expression for which the result set of the subquery is searched.

sqlstatementsqlstatement

Оператор SELECT с тем же форматом и правилами, что и любой другой оператор SELECT.A SELECT statement, following the same format and rules as any other SELECT statement. Его необходимо включать в скобки.It must be enclosed in parentheses.

Создание формы на основе запроса в Access

На очереди тема «Создание формы на основе запроса в Access». Если в базе данных уже имеется запрос, в котором выбраны таблицы, нужные для получения результата, определены поля, которые необходимо включить в результат, параметры, сделаны вычисления, целесообразно создавать форму на основе такого запроса.
Создание формы на основе запроса в Access дело не хитрое. В созданном ранее запросе из таблицы НАКЛАДНАЯ выбираются все накладные, по которым производилась отгрузка в заданном месяце. В вычисляемом поле месяца задано имя параметра — и запрос сохранен под именем Накладные месяца (рис. 5.11).
Выбор запроса с параметром в качестве источника записей позволит создать форму, обеспечивающую диалог с пользователем и вывод только тех записей, которые соответствуют заданным в диалоге условиям отбора.
Для создания такой формы можно использовать любую из команд автоматического создания формы одним щелчком мыши: Форма (Form), Разделенная форма (Split Form) или Несколько элементов (Multiple Items) (см. рис. 5.1), размещенных в группе Формы (Forms) на вкладке ленты Создание (Create).
1. Выделив запрос в области навигации, щелкните на кнопке Несколько элементов (Multiple Items). В результате выполнения этой команды откроется диалоговое окно Введите значение параметра (Enter Parameter Value).
2. Введите номер месяца, например 3. Форма откроется в режиме макета и отобразит записи, соответствующие введенному значению параметра (рис. 5.12).
По команде Несколько элементов (Multiple Items) в форме автоматически создается табличный макет. В табличных макетах элементы расположены в двух разделах формы: надписи располагаются в заголовке формы, поля записей — по строкам в области данных.
1. Сохраните форму, воспользовавшись командой контекстного меню формы, и закройте ее.
2. Выберите форму в области навигации, выполните в ее контекстном меню команду Открыть (Open) или дважды щелкните на ней. Откроется диалоговое окно для ввода значения параметра. Введите нужное значение. В открывшейся форме будут представлены записи, выбранные в соответствии с заданным условием отбора.
3. Для построенной формы открыт режим ввода новых записей. Очевидно это находится в противоречии с заданным условием отбора, поэтому в режиме макета целесообразно открыть Страницу свойств (Property Sheet) формы и на вкладке Данные (Data) в строке Разрешить добавление (Allow Additions) выбрать значение Нет (No). После изменения свойства в форме не будет отображаться строка новой записи, а также померкнет соответствующий значок на панели перехода по записям и кнопка Создать (New) в группе Записи (Records) на вкладке ленты Главная (Home). В приведенном примере добавление новой записи вообще невозможно, т. к. в форме не представлено обязательное поле вторичного ключа — номер договора.

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

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

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

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

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

SQL-запросы

В Access 2013 и других версий запросы выполняются при помощи языка структурированных запросов SQL.

Для создания SQL-запросов необходимо перейти в режим конструктора, затем на кнопке «Вид» выбрать «Режим SQL». В результате появится диалоговое окно, в котором в поле Select вводим названия столбцов, а в поле From — то, что будет выводиться в строках, например названия поставщиков (если первый столбец «Название»).

В Access используется не чистый SQL, а его диалект Jet-SQL. Основными инструкциями для запросов в этом языке являются: SELECT, по которому осуществляется выборка из записей по определенным условиям (названия полей исходных таблиц, переносящихся в результирующую таблицу), UPDATE — используется с целью редактирования записей, DELETE — для удаления каких-либо указанных записей, CREATE — для создания новых объектов БД. В MS Access также используются TRANSFORM для построения перекрестных запросов, WITH OWNER-ACCESS OPTION для создания специальных запросов пользователем, не имеющем доступа к таблицам, к которым должен быть доступ у этого запроса, IN (для обеспечения связи с удаленной БД), DISTINCTROW (создание запроса с возможным объединением данных). Также могут применяться итоговые функции SQL, встроенные функции Access и VBA.

Дополнительная информация

Способ 1

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

Следующий пример запроса использует таблицу Orders из учебной базы данных Northwind для создания суммы стоимости доставки за каждый месяц 1997. В целях повышения производительности примеры данных ограничены одним годом. Так как функция DSum выполняется один раз для каждой записи в запросе, для завершения обработки запроса может потребоваться несколько секунд (в зависимости от скорости компьютера). Чтобы создать и запустить этот запрос, выполните указанные ниже действия.

Откройте учебную базу данных Northwind.

Создайте новый запрос на выборку и добавьте таблицу Orders .

В меню вид выберите пункт итоги.
Note (Примечание ) В Access 2007 щелкните итоги в группе Показать/скрыть на вкладке конструктор .

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

В выражении в поле поле отображается и сортируется часть года поля OrderDate.

Во втором столбце бланка запроса введите в поле поле следующее выражение и выберите следующие параметры для полей «Итого», «Сортировать» и «Показать»:

Выражение в поле поля сортирует и отображает часть месяца поля Дата заказа в виде целого значения от 1 до 12.

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

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

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

Выражение в поле поля отображает каждый месяц в текстовом формате, например Январь, фев, Мар и т. д.

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

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

Выполните запрос

Обратите внимание, что в поле Рунтот отображаются следующие записи с накопленной суммой:

Способ 2

Второй метод использует итоговый запрос с функцией DSum () для создания итоговой суммы по группе.

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

Откройте учебную базу данных Northwind. mdb.

Создайте новый запрос на выборку и добавьте таблицу Orders.

В Виевмену щелкните итоги.
Note (Примечание ) В Access 2007 щелкните итоги в группе Показать/скрыть на вкладке конструктор .

В первом столбце бланка запроса добавьте следующее поле в поле поле и выберите следующие параметры для полей «Итого» и «Показать»:

В этом поле данные группируются по КодСотрудника.

Во втором столбце бланка запроса добавьте следующее поле в поле поле и выберите следующие параметры для полей «Итого» и «Показать»:

Это поле суммирует данные доставки.

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

Выражение в поле поле использует функцию DSum () для суммирования поля фрахта, когда EmployeeID меньше текущего Емпалиас, а затем форматирует поле в долларах.

Выполните запрос

Обратите внимание, что в поле Рунтот отображаются следующие записи с накопленной суммой:

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

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

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

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

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

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

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

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

Групповые операции (перекрёстные запросы в access)

Аксесс довольно сложная программа. Это подтверждает тот факт, что в интернете можно найти массу информации по ней. Однако, вы знаете что на самом деле достаточно знать лишь 20% инструментов, чтобы создавать и настраивать 80% баз данных в программе? И научиться этому можно после изучения 40 специальных видеоуроков, в которых описана самая суть без воды.

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

В перекрёстном запросе обычно три поля: поле заголовка столбцов, поле заголовка строк и поле итогового содержимого ячеек.

По умолчанию строка «Групповая операция» в режиме конструктора скрыта.

Группировка

Инструкция «Группировка» разбивает результаты запроса по каждому уникальному значению поля (полей). Например, если в поле Страна встречается 20 раз Литва, 30 раз Польша, 50 раз Чехия, то при группировке по этому полю будет всего три записи – по одной на каждую страну. Если будем добавлять группировку в другие поля, то количество выбранных записей возрастёт, так как программа будет искать уникальное значение не одного, а нескольких полей (например, зададим группировку по странам и по поставщикам. В Литве пять поставщиков, а, следовательно, уникальных записей для Литвы уже будет пять, а не одна).

Инструкция Группировка автоматически задаёт сортировку в алфавитном порядке. Для изменения порядка сортировки надо явно указать программе параметры в строке «Сортировка».

Краткие рекомендации

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

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

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

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

Как это можно исправить  ?

Код
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector