Запросы на выборку в Access. Определение условий для выводимого поля

Я хотел бы иметь возможность создать параметризованный запрос в MS Access 2003 и передать значения определенных элементов формы в этот запрос, а затем получить соответствующий набор результатов и выполнить с ними некоторые базовые вычисления. Я вкратце расскажу, как получить параметры запроса для заполнения элементами формы. Если мне нужно использовать VBA, это нормально.

5 ответов

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

Например, если вы хотите отфильтровать запрос по элементу управления LastName в MyForm, вы должны использовать это в качестве критерия:

LastName = Forms!MyForm!LastName

PARAMETERS [!MyForm!] Text (255); SELECT tblCustomers.* FROM tblCustomers WHERE tblCustomers.LastName=!!;

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

С другой стороны, если вы что-то делаете в коде, просто напишите SQL на лету и используйте буквальное значение элемента управления формы для создания предложения WHERE.

Вот фрагмент кода. Обновляет таблицу, используя параметр txtHospital:

Set db = CurrentDb Set qdf = db.QueryDefs("AddHospital") qdf.Parameters!txtHospital = Trim(Me.HospName) qdf.ReturnsRecords = False qdf.Execute dbFailOnError intResult = qdf.RecordsAffected

Вот пример SQL:

PARAMETERS txtHospital Text(255); INSERT INTO tblHospitals () VALUES ()

Есть три традиционных способа обойти эту проблему:

  1. Присвойте параметру какое-нибудь значение, чтобы пользователю было предложено ввести значение при выполнении запроса.
  2. Поле ссылки на форме (возможно скрытое)
  3. Создайте запрос на лету и не используйте параметры.

Я думаю, что это просто неправильно для меня, что вам придется вводить что-то вроде [?enter ISO code of the country] или ссылки на поля в вашей форме, такие как: !! .

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

Обычно я выбирал последний вариант, создавал запрос на лету и обновлял объект запроса по мере необходимости. Тем не менее, это распространено для атаки с использованием SQL-инъекций (случайно или специально, зная моих пользователей), и это просто неприлично.

"Ed. Start - for completion of the example dim qryStartDate as date dim qryEndDate as date qryStartDate = #2001-01-01# qryEndDate = #2010-01-01# "Ed. End "QUOTEING "stallyon": To pass parameters to a query in VBA " is really quite simple: "First we"ll set some variables: Dim qdf As Querydef Dim rst As Recordset "then we"ll open up the query: Set qdf = CurrentDB.QueryDefs(qryname) "Now we"ll assign values to the query using the parameters option: qdf.Parameters(0) = qryStartDate qdf.Parameters(1) = qryEndDate "Now we"ll convert the querydef to a recordset and run it Set rst = qdf.OpenRecordset "Run some code on the recordset "Close all objects rst.Close qdf.Close Set rst = Nothing Set qdf = Nothing

(Я не проверял это сам, только кое-что, что я собрал в своих путешествиях, потому что время от времени я хотел сделать это, но заканчивал тем, что использовал один из моих ранее упомянутых кладжей)

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

"... Dim qdf As DAO.QueryDef Dim prmOne As DAO.Parameter Dim prmTwo As DAO.Parameter Dim rst as recordset "... "open up the query: Set qdf = db.QueryDefs("my_two_param_query") "params called param_one and "param_two "link your DAP.Parameters to the query Set prmOne = qdf.Parameters!param_one Set prmTwo = qdf.Parameters!param_two "set the values of the parameters prmOne = 1 prmTwo = 2 Set rst = qdf.OpenRecordset(dbOpenDynaset, _ dbSeeChanges) "... treat the recordset as normal "make sure you clean up after your self Set rst = Nothing Set prmOne = Nothing Set prmTwo = Nothing Set qdf = Nothing

DoCmd.SetParameter "frontMthOffset", -3 DoCmd.SetParameter "endMthOffset", -2 DoCmd.OpenQuery "QryShowDifference_ValuesChangedBetweenSELECTEDMonths"

где SQL запроса Access включает фактически в SQL. например

"select blah from mytable where dateoffset="

Все просто работает!

Давайте возьмем пример. параметризованный запрос выглядит так:

Select Tbl_Country.* From Tbl_Country WHERE id_Country = _ [?enter ISO code of the country]

и вы хотели бы иметь возможность получить это значение ([? enter... country] one) из формы, где у вас есть элементы управления и некоторые данные в нем. Ну... это может быть возможно, но требует некоторой нормализации кода.

Одним из решений было бы присвоение элементам управления формы определенной логики, такой как fid_Country для контроля, который будет держать id_Country значение. Затем ваш запрос может быть представлен в виде строки:

Qr = "Select Tbl_Country.* From Tbl_Country WHERE id_Country = "

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

Dim ctl as Control For each ctl in Me.controls If instr(qr,"[" & ctl.name & "]") > 0 Then qr = replace(qr,"[" & ctl.name & "]",ctl.value) End if Next i

При этом у вас будет полностью обновленный запрос, в котором параметры заменены реальными данными. В зависимости от типа fid_country (строка, GUID, дата и т.д.) Может потребоваться добавить дополнительные двойные кавычки или нет, чтобы получить окончательный запрос, например:

Qr = "Select Tbl_Country.* From Tbl_Country WHERE id_Country = ""GB"""

Это полностью совместимый с Access запрос, который вы можете использовать для открытия набора записей:

Set rsQuery = currentDb.openRecordset(qr)

Я думаю, что вы сделали здесь.

Эта тема имеет решающее значение, когда ваша цель заключается в разработке приложений Access. Вы должны предложить пользователям стандартный способ запроса данных из их графического интерфейса не только для запуска запросов, но и для фильтрации непрерывных форм (точно так же, как это делает Excel с помощью опции «автофильтр») и управления параметрами отчетов. Удачи!

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

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

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

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

Пример Поля Фамилия, пол, группа находятся в таблице «Студенты» , поля номер общежития и комната находятся в таблице «Общежитие» . Поэтому в окне Добавление таблицы выберем эти таблицы и нажмем кнопку Добавить. Затем нажмем кнопку Закрыть. Результат:

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

Пример Результат: Автоматически заполнилась строка Имя таблицы и строка Вывод на экран. Птичка означает, что значение поля на экран выводится. Для вывода фамилий в алфавитном порядке выберем для поля Фамилия в строке Сортировка По возрастанию.

Пример Нам нужно выполнять отбор по полям Пол и Группа. Поэтому перетащим эти поля из таблиц в строку Поле. Эти поля на экран выводить не нужно, поэтому уберем птичку в строке Вывод на экран. Результат:

Пример Заполним строку Условие отбора. В этой строке для поля Пол укажем ж (см. таблицу), а для поля Группа укажем 9701. Результат: Эти поля имеют текстовый тип. Двойные кавычки добавились автоматически. Для выполнения запроса нажмите

Составление условий отбора Условия отбора - это ограничения, накладываемые на запрос для определения записей, с которыми он будет работать. В условиях отбора: значение поля типа дата/время заключается в знаки номера (#). Например, #05. 02. 2009# значение поля текстового типа заключается в прямые двойные кавычки ("). Для объединения двух полей текстового типа используется оператор &. имя поля заключается в квадратные скобки (). Условие отбора пишется в бланке запроса в строке «Условие отбора» в том поле по которому производится сравнение.

Проверка диапазона значений Для проверки на равенство, знак = можно не писать. Условие отбора Результат отбора = "Иванов" Отбор записей, содержащих фамилии, начиная с «Иванов» и до конца алфавита, в поле «Фамилия» Between Отбор записей, содержащих в поле «Дата» #02. 99# And даты в диапазоне от 2 февраля 1999 до 1 декабря 1999 #01. 12. 99# Not "США" Отбор записей содержащих в поле «Страна» любую страну за исключением США

Комбинирование условий отбора с помощью операторов and и or Если выражения вводятся в несколько ячеек Условие отбора, то они автоматически объединяются с помощью операторов And или Or. Если выражения находятся в разных ячейках, но в одной строке, то Microsoft Access использует оператор And

Комбинирование условий отбора с помощью операторов and и or Если же выражения находятся в разных строках бланка запроса, то Microsoft Access использует оператор Or.

Часть значения поля (Like) Оператор Like работает приблизительно так же, как шаблоны для поиска файлов. Выражение Результаты отбора Like "С*" Имена начинаются с буквы С Like "[А-Д]*" Имена находятся в диапазоне от А до Д Like "*тр*" Имена содержат сочетание букв «тр» Like "? ? " Имена состоят из четырех букв

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

Запрос с параметром Параметр – информация для запроса, вводимая с клавиатуры. Используется в условии для отбора. Текст сообщения указывается в квадратных скобках. В конце обязательно «: » При выполнении такого запроса выводится окно: Результат.

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

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

Рассмотрим запросы на выборку в Access на примере получения информации из таблицы ТОВАР базы данных Поставка товаров .

Задача 1 . Пусть необходимо выбрать ряд характеристик товара по его наименованию.

  1. Для создания запроса в окне базы данных выберите вкладку ленты - Создание (Create) и в группе Запросы (Queries) нажмите кнопку Конструктор запросов (Query Design). Откроется пустое окно запроса на выборку в режиме конструктора - ЗапросN (QueryN) и диалоговое окно Добавление таблицы (Show Table) (рис. 4.2).
  2. В окне Добавление таблицы (Show Table) выберите таблицу ТОВАР и нажмите кнопку Добавить (Add). Выбранная таблица будет отображена в области схемы данных запроса. Закройте окно Добавление таблицы (Show Table), нажав кнопку Закрыть (Close).

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

Кроме того, на ленте появляется и автоматически активизируется новая вкладка (Query Tools | Design) (на рис. 4.3 представлена на часть этой вкладки), на которой цветом выделен тип созданного запроса - Выборка (Select). Таким образом, по умолчанию всегда создается запрос на выборку. Команды этой вкладки представляют инструментарий для выполнения необходимых действий при создании запроса. Эта вкладка открывается, когда в режиме конструктора создается новый запрос или редактируется существующий.

  1. Для удаления любой таблицы из схемы данных запроса установите на нее курсор мыши и нажмите клавишу . Для добавления ― нажмите кнопку Отобразить таблицу (Show Table) в группе Настройка запроса (Query Setup) на вкладке Работа с запросами | Конструктор (Query Tools | Design) или выполните команду Добавить таблицу (Show Table) в контекстном меню, вызываемом на схеме данных запроса.
  2. В окне конструктора (рис. 4.4) последовательно перетащите из списка полей таблицы ТОВАР поля НАИМ_ТОВ, ЦЕНА, НАЛИЧИЕ_ТОВ в столбцы бланка запроса в строку Поле (Field).
  3. Для включения нужных полей из таблицы в соответствующие столбцы запроса можно воспользоваться следующими приемами:
    • в первой строке бланка запроса Поле (Field) щелчком мыши вызвать появление кнопки списка и выбрать из списка нужное поле. Список содержит поля таблиц, представленных в схеме данных запроса;
    • дважды щелкнуть на имени поля таблицы в схеме данных запроса;
    • для включения всех полей таблицы можно перетащить или дважды щелкнуть на символе * (звездочка) в списке полей таблицы в схеме данных запроса.
  4. Если вы по ошибке перетащили в бланке запроса ненужное поле, удалите его. Для этого переместите курсор в область маркировки столбца сверху, где он примет вид черной стрелки, направленной вниз, и щелкните кнопкой мыши. Столбец выделится. Нажмите клавишу или выполните команду Удалить столбцы (Delete Columns) в группе Настройка запроса (Query Setup).
  5. В строке Вывод на экран (Show) отметьте поля, иначе они не будут включены в таблицу запроса.
  6. Запишите в строке Условия отбора (Criteria) наименование товара, как показа-но в бланке запроса на рис. 4.4. Так как выражение в условии отбора не содержит оператора, то по умолчанию используется оператор =. Используемое в выражении текстовое значение вводится в двойных кавычках, которые добавляются автоматически.
  7. Выполните запрос, щелкнув на кнопке Выполнить (Run) или на кнопке Режим (View) в группе Результаты (Results). На экране появится окно запроса в режиме таблицы с записью из таблицы ТОВАР, отвечающей заданным условиям отбора.

ЗАМЕЧАНИЕ
Окно запроса в режиме таблицы аналогично окну просмотра таблицы базы данных. Через некоторые таблицы запроса может производиться изменение данных базовой таблицы, лежащей в основе запроса. Запрос, просматриваемый в режиме таблицы, в отличие от таблицы базы данных Access 2010, не имеет столбца Щелкнуть для добавления (Click to Add), предназначенного для изменения структуры таблицы. В этом режиме на вкладке ленты Главная (Home) доступны те же кнопки, что и при открытии таблицы базы данных.

  1. Если при вводе сложного наименования товара вы допустили неточность, товар не будет найден в таблице. Использование операторов шаблона - звездочка (*) и вопросительный знак (?) (стандарт ANSI-89, используемый для запросов по умолчанию) или знак процента (%) и подчеркивания (_) (ANSI-92, рекомендуемый как стандарт для SQL Server), упрощает поиск нужных строк и позволяет избежать многих ошибок. Введите вместо полного имени товара Корпус* или Корпус%. Выполните запрос. Если в поле наименования товара одно значение начинается со слова «Корпус», результат выполнения запроса будет таким же, как в предыдущем случае. После выполнения запроса введенное выражение будет дополнено оператором Like «Корпус*». Этот оператор позволяет использовать символы шаблона при поиске в текстовых полях.
  2. Если необходимо найти несколько товаров, используйте оператор In. Он позволяет выполнить проверку на равенство любому значению из списка, который задается в круглых скобках. Запишите в строке условий отбора In («Корпуc MiniTower»;»HDD Maxtor 20GB»;»FDD 3,5″). В таблице запроса будет выведено три строки. В операторе In не допускается использование символов шаблона.
  3. Сохраните запрос, щелкнув на вкладке Файл (File) и выполнив команду Сохранить (Save). В окне Сохранение (Save As) введите имя запроса Пример1. Заметим, что имя запроса не должно совпадать не только с именами имеющихся запросов, но и с именами таблиц в базе данных.
  4. Закройте текущий запрос по команде контекстного меню Закрыть (Close) или нажав кнопку окна запроса Закрыть (Close).
  5. Выполните сохраненный запрос, выделив запрос в области навигации и выбрав в контекстном меню команду Открыть (Open).
  6. Для редактирования запроса выделите его в области навигации и выполните в контекстном меню команду Конструктор (Design View).

Задача 2. Пусть надо выбрать товары, цена которых не более 1000 руб., и НДС не более 10%, а также выбрать товары, цена которых более 2500 руб. Результат должен содержать наименование товара (НАИМ_ТОВ), его цену (ЦЕНА) и НДС (СТАВКА_НДС).

  1. Создайте новый запрос в режиме конструктора, добавьте таблицу ТОВАР. В окне конструктора (рис. 4.5) последовательно перетащите из списка полей таблицы ТОВАР в бланк запроса поля НАИМ_ТОВ, ЦЕНА, СТАВКА_НДС.
  2. Запишите Условия отбора (Criteria), как показано в бланке запроса на рис. 4.5. Между условиями, записанными в одной строке, выполняется логическая операция AND. Между условиями, записанными в разных строках, выполняется логическая операция OR.
  3. Выполните запрос, щелкните на кнопке Выполнить (Run) в группе Результаты (Results). На экране появится окно запроса в режиме таблицы с записями из таблицы ТОВАР, отвечающими заданным условиям отбора.
  4. Сохраните запрос, выполнив соответствующую команду в контекстном меню запроса, которое вызывается при установке курсора на заголовок запроса. Дайте ему имя Пример2 .

Задача 3 . Пусть надо выбрать все накладные за заданный период. Результат должен содержать номер накладной (НОМ_НАК), код склада (КОД_СК), дату отгрузки (ДАТА_ОТГР) и общую стоимость отгруженного товара (СУММА_НАКЛ).

  1. Создайте новый запрос в режиме конструктора, добавьте таблицу НАКЛАДНАЯ. В окне конструктора последовательно перетащите из списка полей таблицы НАКЛАДНАЯ в бланк запроса все необходимые поля.
  2. Для поля ДАТА_ОТГР в строке Условия отбора (Criteria) запишите Between #11.01.2008# And #31.03.2008#. Оператор Between задает интервал дат (в ANSI-92 вместо знака # используются одинарные кавычки ‘). Кроме того, этот оператор позволяет задать интервал для числового значения.

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

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

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

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

Рассмотрим запросы на выборку в Access на примере получения информации из таблицы ТОВАР базы данных Поставка товаров.

Задача 1 . Пусть необходимо выбрать ряд характеристик товара по его наименованию.

  1. Для создания запроса в окне базы данных выберите вкладку ленты - Создание (Create) и в группе Запросы (Queries) нажмите кнопку Конструктор запросов (Query Design). Откроется пустое окно запроса на выборку в режиме конструктора - ЗапросN (QueryN) и диалоговое окно Добавление таблицы (Show Table) (рис. 4.2).
  2. В окне Добавление таблицы (Show Table) выберите таблицу ТОВАР и нажмите кнопку Добавить (Add). Выбранная таблица будет отображена в области схемы данных запроса. Закройте окно Добавление таблицы (Show Table), нажав кнопку Закрыть (Close).

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

Кроме того, на ленте появляется и автоматически активизируется новая вкладка (Query Tools | Design) (на рис. 4.3 представлена на часть этой вкладки), на которой цветом выделен тип созданного запроса - Выборка (Select). Таким образом, по умолчанию всегда создается запрос на выборку. Команды этой вкладки представляют инструментарий для выполнения необходимых действий при создании запроса. Эта вкладка открывается, когда в режиме конструктора создается новый запрос или редактируется существующий.

  1. Для удаления любой таблицы из схемы данных запроса установите на нее курсор мыши и нажмите клавишу. Для добавления ― нажмите кнопку Отобразить таблицу (Show Table) в группе Настройка запроса (Query Setup) на вкладке Работа с запросами | Конструктор (Query Tools | Design) или выполните команду Добавить таблицу (Show Table) в контекстном меню, вызываемом на схеме данных запроса.
  2. В окне конструктора (рис. 4.4) последовательно перетащите из списка полей таблицы ТОВАР поля НАИМ_ТОВ, ЦЕНА, НАЛИЧИЕ_ТОВ в столбцы бланка запроса в строку Поле (Field).
  3. Для включения нужных полей из таблицы в соответствующие столбцы запроса можно воспользоваться следующими приемами:
    • в первой строке бланка запроса Поле (Field) щелчком мыши вызвать появление кнопки списка и выбрать из списка нужное поле. Список содержит поля таблиц, представленных в схеме данных запроса;
    • дважды щелкнуть на имени поля таблицы в схеме данных запроса;
    • для включения всех полей таблицы можно перетащить или дважды щелкнуть на символе * (звездочка) в списке полей таблицы в схеме данных запроса.
  4. Если вы по ошибке перетащили в бланке запроса ненужное поле, удалите его. Для этого переместите курсор в область маркировки столбца сверху, где он примет вид черной стрелки, направленной вниз, и щелкните кнопкой мыши. Столбец выделится. Нажмите клавишу или выполните команду Удалить столбцы (Delete Columns) в группе Настройка запроса (Query Setup).
  5. В строке Вывод на экран (Show) отметьте поля, иначе они не будут включены в таблицу запроса.
  6. Запишите в строке Условия отбора (Criteria) наименование товара, как показа-но в бланке запроса на рис. 4.4. Так как выражение в условии отбора не содержит оператора, то по умолчанию используется оператор =. Используемое в выражении текстовое значение вводится в двойных кавычках, которые добавляются автоматически.
  7. Выполните запрос, щелкнув на кнопке Выполнить (Run) или на кнопке Режим (View) в группе Результаты (Results). На экране появится окно запроса в режиме таблицы с записью из таблицы ТОВАР, отвечающей заданным условиям отбора.

ЗАМЕЧАНИЕ
Окно запроса в режиме таблицы аналогично окну просмотра таблицы базы данных. Через некоторые таблицы запроса может производиться изменение данных базовой таблицы, лежащей в основе запроса. Запрос, просматриваемый в режиме таблицы, в отличие от таблицы базы данных Access 2010, не имеет столбца Щелкнуть для добавления (Click to Add), предназначенного для изменения структуры таблицы. В этом режиме на вкладке ленты Главная (Home) доступны те же кнопки, что и при открытии таблицы базы данных.

  1. Если при вводе сложного наименования товара вы допустили неточность, товар не будет найден в таблице. Использование операторов шаблона - звездочка (*) и вопросительный знак (?) (стандарт ANSI-89, используемый для запросов по умолчанию) или знак процента (%) и подчеркивания (_) (ANSI-92, рекомендуемый как стандарт для SQL Server), упрощает поиск нужных строк и позволяет избежать многих ошибок. Введите вместо полного имени товара Корпус* или Корпус%. Выполните запрос. Если в поле наименования товара одно значение начинается со слова «Корпус», результат выполнения запроса будет таким же, как в предыдущем случае. После выполнения запроса введенное выражение будет дополнено оператором Like «Корпус*». Этот оператор позволяет использовать символы шаблона при поиске в текстовых полях.
  2. Если необходимо найти несколько товаров, используйте оператор In. Он позволяет выполнить проверку на равенство любому значению из списка, который задается в круглых скобках. Запишите в строке условий отбора In («Корпуc MiniTower»;»HDD Maxtor 20GB»;»FDD 3,5″). В таблице запроса будет выведено три строки. В операторе In не допускается использование символов шаблона.
  3. Сохраните запрос, щелкнув на вкладке Файл (File) и выполнив команду Сохранить (Save). В окне Сохранение (Save As) введите имя запроса Пример1. Заметим, что имя запроса не должно совпадать не только с именами имеющихся запросов, но и с именами таблиц в базе данных.
  4. Закройте текущий запрос по команде контекстного меню Закрыть (Close) или нажав кнопку окна запроса Закрыть (Close).
  5. Выполните сохраненный запрос, выделив запрос в области навигации и выбрав в контекстном меню команду Открыть (Open).
  6. Для редактирования запроса выделите его в области навигации и выполните в контекстном меню команду Конструктор (Design View).

Задача 2. Пусть надо выбрать товары, цена которых не более 1000 руб., и НДС не более 10%, а также выбрать товары, цена которых более 2500 руб. Результат должен содержать наименование товара (НАИМ_ТОВ), его цену (ЦЕНА) и НДС (СТАВКА_НДС).

  1. Создайте новый запрос в режиме конструктора, добавьте таблицу ТОВАР. В окне конструктора (рис. 4.5) последовательно перетащите из списка полей таблицы ТОВАР в бланк запроса поля НАИМ_ТОВ, ЦЕНА, СТАВКА_НДС.
  2. Запишите Условия отбора (Criteria), как показано в бланке запроса на рис. 4.5. Между условиями, записанными в одной строке, выполняется логическая операция AND. Между условиями, записанными в разных строках, выполняется логическая операция OR.
  3. Выполните запрос, щелкните на кнопке Выполнить (Run) в группе Результаты (Results). На экране появится окно запроса в режиме таблицы с записями из таблицы ТОВАР, отвечающими заданным условиям отбора.
  4. Сохраните запрос, выполнив соответствующую команду в контекстном меню запроса, которое вызывается при установке курсора на заголовок запроса. Дайте ему имя Пример2 .

Задача 3 . Пусть надо выбрать все накладные за заданный период. Результат должен содержать номер накладной (НОМ_НАК), код склада (КОД_СК), дату отгрузки (ДАТА_ОТГР) и общую стоимость отгруженного товара (СУММА_НАКЛ).

  1. Создайте новый запрос в режиме конструктора, добавьте таблицу НАКЛАДНАЯ. В окне конструктора последовательно перетащите из списка полей таблицы НАКЛАДНАЯ в бланк запроса все необходимые поля.
  2. Для поля ДАТА_ОТГР в строке Условия отбора (Criteria) запишите Between #11.01.2008# And #31.03.2008#. Оператор Between задает интервал дат (в ANSI-92 вместо знака # используются одинарные кавычки ‘). Кроме того, этот оператор позволяет задать интервал для числового значения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Открыть созданную в предыдущей лабораторной работе базу данных Деканат ТФ .

Создание межтабличных связей

В окне базы данных выбрать объект Таблицы . Щелкнуть по кнопке «Схема данных » на панели инструментов или выполнить команду «Сервис »  «Схема данных », используя командное меню. На экране появится окно «Схема данных » и окно «Добавление таблицы » (рис. 18).

Рис. 18. Диалоговое окно «Схема данных» и диалоговое окно «Добавление таблицы»

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

Перенести все таблицы в окно «Схема данных ». Изменить размер окон таблиц, чтобы был виден весь текст (рис. 19).

Чтобы создать связь между таблицами Студенты и Оценки в соответствии со Схемой данных надо подвести курсор мыши к полю Код студента в таблице Студенты и при нажатой клавише мыши перетащить это поле на поле Код студента в таблице Оценки , а затем отпустить кнопку мыши. Откроется окно «Изменение связей » (рис. 20).

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

Для создания связи щелкнуть по кнопке «Создать ».

Рис. 19. Внешний вид схемы данных базы данных «Деканат ТФ » до наложения связей

Рис. 20. Диалоговое окно задания параметров связи между полями таблиц

Аналогично в соответствии со Схемой данных создаются связи между остальными таблицами (рис. 21).

Рис. 21. Схема данных базы данных «Деканат ТФ »

При закрытии окна схемы данных ответить Да на вопрос о сохранении макета.

Созданные связи между таблицами базы данных могут быть изменены.

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

Рис. 22. Контекстное меню связи

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

Запросы

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

Мы будем разрабатывать запросы в режиме Конструктора .

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

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

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

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

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

1. На удаление записи. Этот запрос удаляет группу записей из одной или нескольких таблиц.

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

3. На добавление записей. Добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц.

4. На создание таблицы. Создает новую таблицу на основе всех или части данных из одной или нескольких таблиц.

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

Понравилась статья? Поделиться с друзьями: