Контакты

Отбор в запросах по определенному столбцу access. Как задать условия отбора записей в запросе? Логические операции "И", "ИЛИ"

Для ограничения списка записей, получаемых в результате работы запроса, только удовлетворяющими определенным условиям - в бланке запроса предусмотрены поля для условий отбора. Коротко про это было рассказано в "Шаг 22 - Создание запроса на выборку" , теперь настало время разобраться более подробно.

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

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

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

Для этой цели служит специальная команда языка SQL , которая выглядит так:

Like [ Текст сообщения пользователю ]

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

По умолчанию Access определяет тип вводимых данных как Текстовый. Если же параметр задает условие отбора из столбца с данными типа Числовой или Дата/Время , то необходимо вручную назначить тип данных. Это делается следующим образом:


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

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

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

Операторы

Оператор - это символ или слово, например, = или Оr, указывающие выполнение операции над одним или несколькими элементами. Операторы позволяют выполнять операции над элементами формулы. Access позволяет использовать различные типы операторов для вычислений на листе:

  • арифметические операторы - служат для выполнения арифметических операций над числами (таблица);
  • операторы сравнения - используются для сравнения двух значений. Результатом сравнения может являться логическое значение: либо ИСТИНА, либо ЛОЖЬ;
  • текстовый оператор конкатенации Амперсанд (&) - используется для объединения нескольких текстовых строк в одну строку;
  • операторы ссылки - применяются для описания ссылок на диапазоны ячеек.

Запрос записей в определенном диапазоне значений может выполняться с использованием следующих операторов сравнения: = - равно; > - больше, чем; < - меньше, чем;
<> - не равно;
>= - больше или равно;
<= - меньше или равно.
Допустим, вас интересуют сотрудники, зарплата которых превышает 300 рублей. В строку Условия отбора (Criteria) введите: >300.
Как правило, операторы сравнения используются в числовых полях или полях дат, но они могут применяться и в текстовых полях. Например, если ввести в текстовое поле условие отбора < "П", то будут выбраны значения поля, начинающиеся после буквы «П».

Оператор LIKE

Если вы не уверены в написании какого-либо слова, то можете использовать оператор LIKE и подстановочный знак. Напомним, что знак вопроса заменяет один символ, а звездочка * - группу символов. Например, выражение: LIKE П?Л выполняет поиск слов, начинающихся с буквы П. Выражение: LIKE выполняет поиск слов, пел, пал, пол и т.п.
Под выражением подразумевается любая комбинация операторов, констант, значений текстовых констант, функций, имен полей (столбцов), элементов управления или свойств, результатом которой является конкретное значение.

Выполнение стандартных вычислений нал значениями поля

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

  • Sum - вычисление суммы значений поля;
  • Avg - определение среднего значения поля;
  • Min - нахождение минимального значения поля;
  • Мах - нахождение максимального значения поля;
  • Count - подсчет количества записей поля (может применяться для всех полей);
  • StDav - расчет стандартного отклонения поля;
  • Var - расчет изменения значений поля.

Выполнение групповых операций

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

  • в запросной форме в строке Вывод на экран (Show) поставьте флажки в полях: Тип и Цена, которое будет использоваться для вычислений;
  • выберите в меню Вид (View) команду Групповые операции (Totals) или jm-жмите одноименную кнопку на панели инструментов;
  • установите курсор в поле, над значениями которого будут выполняться вычисления, и выберите в ячейке Групповая операция (Total) требуемую функцию;
  • в меню Запрос (Query) выберите команду Запуск (Run).

С помощью запроса могут быть подсчитаны сумма (Sum) и среднее арифметическое (Avg), найдены минимальное (Min) и максимальное (Max) значения в поле. Закончив работу с запросом, можно сохранить его под каким-нибудь именем.

Рис. 24.11 Составление запроса с использованием групповой операции

Расширение условий отбора

Например, вы хотите узнать объем продаж дорогих (дороже 2500 руб.) и дешевых (меньше 500 руб.) заказов. Введите в ячейку Условия отбора (Criteria) : >2500, в ячейку или (or) <500. Условия, заданные в ячейке или, будут восприниматься как дополнительные.

Использование вычисляемого поля

Вычисляемое поле отображает данные, полученные в запросе по результатам расчета выражения. Значение поля пересчитывается при каждом изменении выражения.
Например, если каждый заказ стоит 5 рублей и вы хотите вычислить стоимость всех заказов, сделанных каждым покупателем, то введите в ячейку Поле выражение: Стоимость:[Количество заказов]*5.

Построитель выражений

Для отображения окна построителя выражений (рис. 24.12) выполните следующие действия:

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

Рис. 24.12 Построитель выражений

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

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

Условием отбора является выражение, которое состоит из операторов сравнения и сравниваемых операторов. В качестве операторов сравнения и логических операторов могут использоваться следующие: =, <, >, < >, Between, In, Like, And, Or, Not, которые определяют операцию над одним или несколькими операндами.

Если условие отбора не содержит оператора, то по умолчанию используется оператор =.

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

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

Константами являются не изменяющиеся значения (например, True, Falls, Да, Нет, Null).

[Имя таблицы]! [Имя поля]

Условия отбора, заданные в одной строке, связываются с помощью логической операции И, а заданные в разных строках - с помощью логической операции ИЛИ. Эти операции могут быть заданы явно в условии отбора с помощью операторов AND и OR соответственно.

Сформировать условие отбора можно с помощью построителя выражения. Перейти в окно Построитель выражений можно, нажав кнопку [Построитель) на панели инструментов или выбрав команду Построить в контекстно-зависимом меню. При этом курсор мыши должен быть установлен в ячейке ввода условия отбора.

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

Для выполнения запроса необходимо на панели инструментов конструктора запросов нажать кнопку [Запуск (!)] или [Представление запроса].

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

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

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

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

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

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

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

Литералы - конкретные значения, воспринимаемые Access так, как они записаны. В качестве литералов могут быть использованы числа, текстовые строки, даты. Текстовые строки заключаются в двойные кавычки, даты - в знаки (#). Например, 567, "Информатика", #1-Января-99#.

Константы - не изменяющиеся значения, которые определены в Access, например, True, False, Да, Нет, Null .

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

Во многих случаях ссылка на конкретное значение должна указывать точное его местоположение в иерархии объектов базы данных, начиная с объекта верхнего уровня. Если необходимо указать ссылку на поле в конкретной таблице, форме, отчете, то перед именем поля ставится имя таблицы, формы, отчета, также заключенное в квадратные скобки и отделенное от имени поля восклицательным знаком. Например, ссылка на поле в таблице примет вид: [Имя таблицы]! [Имя поля] , а ссылка на свойство DefaultValue элемента управления Дата рождения в форме СТУДЕНТ: Forms! [СТУДЕНТ]! [ Дата рождения].DefaultValue

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

Эти операторы определяют операцию над одним или несколькими операндами.

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

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

Допускается использование операторов шаблона - звездочка (*) и вопросительный знак (?).

Оператор Between позволяет задать интервал для числового значения и даты. Например:

Between 10 And 100

задает интервал от 10 до 100; можно задать интервал дат:

Between #01.01.1997* And #31.12.1997*

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

In ("Математики";"Информатики"; " Истории")

Оператор Like позволяет использовать образцы, использующие символы шаблона, при поиске в текстовых полях. Например: Like "Иванов* "

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

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

Логические операции

Логические операции "И", "ИЛИ"

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

Вычисляемые поля

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

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

Выражение вводится в бланк запроса в пустое поле строки Поле . После нажатия клавиши или перемещения курсора в другое поле строки, перед выражением в этом поле строки добавляется имя поля Выражeние N . N - целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Имя вычисляемого поля, стоящее перед выражением, отделяется от него двоеточием. Например:

Выражение!: [Цена]*[Количество] где Цена и Количество - имена полей.

Имя вычисляемого поля - выражение1 становится заголовком столбца в таб­лице с результатами выполнения запроса. Это имя можно изменить.

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

Встроенные функции

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

  • Функции даты и времени . Используются при обработке дат и времени в полях и литералах. Возвращают дату и время полностью или частично (год, месяц, день), например, функция Date формирует текущую дату, функция Month выделяет месяц из значения поля, содержащего дату.
  • Функции обработки текста . Используются при работе с символьными строками.
  • Функции преобразования типа данных . Предоставляют возможность пользователю задавать тип данных для числовых значений, что позволяет избежать подбора наиболее подходящего типа данных системой.
  • Математические и тригонометрические функции . Выполняют операции над числовыми значениями, которые невозможно выполнить с помощью стандартных арифметических операторов.
  • Финансовые функции . Подобно функциям Excel, служат для расчета процента возврата по инвестициям, амортизационных отчислений, годовой ренты и т. п.
  • Статистические функции . Используются при работе над полями подмножества записей для вычисления среднего значения, суммы, минимального, максимального значения.

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

Присвоение пользовательских имен вычисляемым полям

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

  1. Изменение имени поля в запросе. В режиме конструктора запроса в бланке запроса вместо Выражением введите новое имя.
  2. Изменение подписи поля в свойствах поля. Установите курсор на вычисляемое поле в бланке запроса и откройте окно Свойства поля , щелкнув правой кнопкой мыши и выбрав в контекстном меню пункт Свойства . В окне Свойства поля на вкладке Общие введите нужный текст подписи в строку Подпись поля .


Понравилась статья? Поделитесь ей