Запросы с параметрами в Access. Создание запроса с параметрами Создание перекрестного запроса

Запрос в Access является объектом, который сохраняется в файле базы данных и может многократно повторяться. Все запросы, которые мы демонстрировали до сих пор, содержали конкретные значения дат, названий, имен и т. д. Если требуется повторить такой запрос с другими значениями в условиях отбора, его нужно открыть в режиме Конструктора, изменить условие и выполнить. Чтобы не делать многократно этих операций, можно создать запрос с параметрами. При выполнении такого запроса выдается диалоговое окно Введите значение параметра (Enter Parameter Value), в котором пользователь может ввести конкретное значение и затем получить нужный результат.

Покажем, как создавать запросы с параметрами на примере запроса "Отсортированный список товаров", который мы создавали ранее. Теперь мы с помощью этого запроса попробуем отобрать товары, поставляемые определенным поставщиком. Для этого:

  1. Откройте данный запрос в режиме Конструктора.
  2. Чтобы определить параметр запроса, введите в строку Условие отбора (Criteria) для столбца "Название" (CompanyName) вместо конкретного значения слово или фразу и заключите их в квадратные скобки, например [Поставщик:]. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.
  3. Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных Текстовый (Text). Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите из контекстного меню команду Параметры (Parameters) или выполните команду меню Запрос, Параметры (Query, Parameters). Появляется диалоговое окно Параметры запроса (Query Parameters), представленное на рис. 4.31.

Параметры запроса" width="441" height="261">

Рис. 4.31. Диалоговое окно Параметры запроса

  1. В столбец Параметр (Parameter) нужно ввести название параметра точно так, как он определен в бланке запроса (легче всего это сделать путем копирования через буфер обмена), только можно не вводить квадратные скобки. В столбце Тип данных (Data Type) выберите из раскрывающегося списка необходимый тип данных. Нажмите кнопку ОК.
  2. Нажмите кнопку Запуск (Run) на панели инструментов, чтобы выполнить запрос. При выполнении запроса появляется диалоговое окно Введите значение параметра (Input Parameter Value) (рис. 4.32), в которое нужно ввести значение, например Tokyo Traders. Результат выполнения запроса представлен на рис. 4.33. В него попадают только те товары, которые поставляются данным поставщиком.

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

Как правило, запросы с параметром создаются в тех случаях, когда предполагается выполнять этот запрос многократно, изме­няя лишь условия отбора. В отличие от запроса на выборку, где для каждого условия отбора создается свой запрос и все эти за­просы хранятся в БД, параметрический запрос позволяет создать и хранить один единственный запрос и вводить условие отбора (значение параметра) при запуске этого запроса, каждый раз по­лучая новый результат. В качестве параметра может быть любой текст, смысл которого определяет значение данных, которые бу­дут выведены в запросе. Значение параметра задается в специаль­ном диалоговом окне. В случае, когда значение выводимых дан­ных должно быть больше или меньше указываемого значения параметра, в поле «Условие отбора» бланка запроса перед пара­метром, заключенным в квадратные скобки ставится соответст­вующий знак. Можно также создавать запрос с несколькими па­раметрами, которые связываются друг с другом логическими опе­рациями И и ИЛИ. В момент запуска запроса на выполнение MS Access отобразит на экране диалоговое окно для каждого из пара­метров. Помимо определения параметра в бланке запроса, необ­ходимо указать с помощью команды Запрос Параметры соот­ветствующий ему тип данных:

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

2. В качестве условия введите параметр, заключенный в квад­ратные скобки (например, [Введите название] или >[Выше какого роста?]).

3. Выберите команду Запрос > Параметры.

4. В появившемся окне Параметры запроса введите без квад­ратных скобок параметр (для точности ввода воспользуй­тесь «быстрыми» клавишами копирования и вставки из бу­фера обмена) и укажите соответствующий ему тип данных. Нажмите ОК.

5. Нажмите кнопку Запуск панели инструментов.

6. В появившемся окне укажите значение параметра.

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



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

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

Квадратные скобки ([...]), в них заключаются имена элемен­тов управления;

Знаки номеров (ft), в них заключаются распознанные даты;

Кавычки (""), в них заключается текст, не содержащий про­белов или знаков пунктуации.

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

Например: Прибыль: [Доход]-[Расход].

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

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

2. После выполнения запроса в результирующей таблице поя­вится новое поле с названием «Выражение!», используемым в качестве имени вычисления выражения.

3. В режиме конструктора запроса измените имя «Выраже­ние!» на более значимое.

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

Итоговые запросы

Запросы позволяют производить итоговые вычисления. Для этих целей в Access 97 предусмотреныстатистические функции SQL (рис. IV.6). Статистическую функцию задают в строке Груп­повая операция бланка запросов, которая появляется при выпол­нении команды Вид > Групповые операции.

Функция SQL Действие
Sum Суммирование значений определенного поля
Avg Вычисление среднего значения данных определен­ного поля
Min Вычисление минимального значения поля
Max Вычисление максимального значения поля
Count Вычисление количества записей, отобранных запро­сом по условию
First Определяется первое значение в указанном поле за­писей, отобранных запросом
Last Определяется последнее значение в указанном поле записей, отобранных запросом
StDev Вычисляется стандартное отклонение значений дан­ного поля, для всех записей, отобранных запросом
Var Вычисляется вариация значений данного поля для всех записей, отобранных запросом

Рис. 6 Функции SQL

Для выполнения итогового запроса:

1. Находясь в режиме Конструктора запроса, выберите коман­ду Видä Групповая операция или нажмите кнопку Группо­вая операция панели инструментов. В результате чего в бланке запроса появится строка «Групповая операция».

2. Для соответствующего поля выберите нужную функцию из списка «Группировка».

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

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

1. В режиме Конструктора сформируйте запрос, добавив таб­лицу, которая должна лежать в его основе.

2. Выберите команду Запрос – Перекрестный. Строка запроса «Вывод на экран» в бланке запроса изменится на новую строку «Перекрестная таблица» и перед ней появится строка «Групповая операция».

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

4. Щелкните мышью в строке «Перекрестная таблица» и выбе­рите соответствующие значениям данных полей опции из разворачивающегося списка.

5. Для поля, содержимое которого индицируется в качестве значений, в строке «Групповая операция» введите необхо­димую функцию, например, автосуммирования (Sum), оп­ределения среднего значения (Avg) или количества (Count). На основе данных перекрестного запроса можно строить диа­граммы, представленные в виде формы (см. п. IV. 14.1. Создание формы).

Запрос в Access является объектом, который сохраняется в файле базы данных и может многократно повторяться. Все запросы, которые мы демонстрировали до сих пор, содержали конкретные значения дат, названий, имен и т. д. Если требуется повторить такой запрос с другими значениями в условиях отбора, его нужно открыть в режиме Конструктора, изменить условие и выполнить. Чтобы не делать многократно этих операций, можно создать запрос с параметрами. При выполнении такого запроса выдается диалоговое окно Введите значение параметра (Enter Parameter Value), в котором пользователь может ввести конкретное значение и затем получить нужный результат.

Покажем, как создавать запросы с параметрами на примере запроса "Отсортированный список товаров", который мы создавали ранее. Теперь мы с помощью этого запроса попробуем отобрать товары, поставляемые определенным поставщиком. Для этого:

1. Откройте данный запрос в режиме Конструктора.

2. Чтобы определить параметр запроса, введите в строку Условие отбора (Criteria) для столбца "Название" (CompanyName) вместо конкретного значения слово или фразу и заключите их в квадратные скобки, например [Поставщик:]. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.

3. Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных Текстовый (Text). Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите из контекстного меню команду Параметры (Parameters) или выполните команду меню Запрос, Параметры (Query, Parameters). Появляется диалоговое окно Параметры запроса (Query Parameters), представленное на рис. 4.31.

Рис. 4.31. Диалоговое окно Параметры запроса

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

5. Нажмите кнопку Запуск (Run) на панели инструментов, чтобы выполнить запрос. При выполнении запроса появляется диалоговое окно Введите значение параметра (Input Parameter Value) (рис. 4.32), в которое нужно ввести значение, например Tokyo Traders. Результат выполнения запроса представлен на рис. 4.33. В него попадают только те товары, которые поставляются данным поставщиком.


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

Рис. 4.32. Диалоговое окно Введите значение параметра

Рис. 4.33. Результат выполнения запроса с параметром

Совет

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

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

Примечание: Эта статья не относится к веб-приложениям Access.

Терминология

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

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

    • на выборку;

      перекрестный;

      на добавление;

      на создание таблицы;

      на обновление.

    Условия. Условия - это "фильтры", добавляемые в запрос для указания элементов, которые он должен возвратить.

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

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

Создание параметра аналогично добавлению обычного условия в запрос:

При запуске запроса текст отображается без квадратных скобок.

Введите нужное значение и нажмите кнопку ОК .

В условии можно использовать несколько параметров. Например, выражение Between [Введите дату начала:] And [Введите дату окончания:] при выполнении запроса создаст два поля.

Указание типов данных для параметра

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

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

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

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

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

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

Добавление параметра в запрос на объединение

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


Дополнительные сведения о запросах на объединение см. в статье Использование запроса на объединение для просмотра объединенных результатов нескольких запросов .

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

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


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

:

После ввода параметра запрос возвратит значения, содержащие строку параметра. Например, строка параметра us возвратит элементы, в которых поле параметра имеет значение "Австралия" или "Австрия".

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

Возврат элементов, не соответствующих параметру

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

Видео: использование параметров в запросах

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

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

Пример

  1. Создайте запрос в режиме Конструктора на основе таблицы «Töötaja» (поля: Nimi, Perekonnanimi) и таблицы «Amet» (поле: Nimetus).
  2. Чтобы определить параметр запроса, введите в строку Criteria (Условие отбора) для столбца «Amet » (должность) вместо конкретного значения слово или фразу и заключите их в квадратные скобки, например Введи должность. Эта фраза будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса.

3. Если вы хотите, чтобы Access проверяла данные, вводимые в качестве параметра запроса, нужно указать тип данных для этого параметра. Обычно в этом нет необходимости при работе с текстовыми полями, т.к. по умолчанию параметру присваивается тип данных Текстовый (Text) . Если же данные в поле запроса представляют собой даты или числа, рекомендуется тип данных для параметра определять. Для этого щелкните правой кнопкой мыши на свободном поле в верхней части запроса и выберите кнопку
(Параметры) Появляется диалоговое окно Query Parameters (Параметры запроса).

4. В столбец Параметр (Parameter) нужно ввести название параметра точно так, как он определен в бланке запроса (легче всего это сделать путем копирования), только можно не вводить квадратные скобки. В столбце Data Type (Тип данных) выберите из раскрывающегося списка необходимый тип данных. Нажмите кнопку ОК.

5. Нажмите кнопку (Запуск) , чтобы выполнить запрос. При выполнении запроса появляется диалоговое окно Введите значение параметра (Enter Parameter Value) ,

в которое нужно ввести значение, например õpetaja. В результате выполнения запроса мы увидем только те имена и фамилии, чья должность — учитель.

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

Установка драйверов