Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 5138 / 390 | Оценка: 4.23 / 3.83 | Длительность: 28:12:00
Специальности: Программист, Менеджер
Лекция 4:

Excel и базы данных

Построение запросов

Частью БД Access является совокупность "стандартных" запросов на поиск данных в базе. Запросы к базе данных могут возникать динамически в процессе работы пользователя и определяться его сиюминутными требованиями. Однако большое число запросов являются "стандартными" и их можно спроектировать заранее.

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

Конструирование запроса "Список Заказчиков"

Рис. 4.7. Конструирование запроса "Список Заказчиков"

А так выглядит результат его выполнения:

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

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

Поскольку Access транслирует создаваемые запросы в SQL форму, то предоставляется возможность просматривать и корректировать запросы и в этой форме. Результат трансляции нашего запроса:

SELECT Заказчики.Название
FROM Заказчики
ORDER BY Заказчики.Название;

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

SELECT Книги.Автор, Книги.Название
FROM Книги
ORDER BY Книги.Автор;

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

Конструирование запроса с фильтром

Рис. 4.9. Конструирование запроса с фильтром

SQL-форма этого запроса имеет вид:

SELECT Заказчики.Название
FROM Заказчики
WHERE (((Заказчики.Город)="Тверь"))
ORDER BY Заказчики.Название;

Построенный только что запрос позволяет выбрать среди всех заказчиков тех, кто живет в Твери. Такой запрос является частным случаем общего запроса. Значительно чаще в подобных ситуациях строится запрос с параметром, в котором код города является параметром, задаваемым динамически в момент вызова запроса. Визуально запросы с параметрами строятся, как обычные. Чтобы предыдущий запрос превратить в запрос с параметрами, в поле запроса, где задавался город (" Тверь "), достаточно записать в квадратных скобках строку, запрашивающую имя параметра, например: [ город?] или [ Town ]. Скобки - признак того, что задается параметр запроса, они сигнализируют о необходимости добавления элемента в коллекцию Parameters, связанную с запросом. Аналогично создаются запросы с несколькими параметрами.

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

Запрос с двумя параметрами

Рис. 4.10. Запрос с двумя параметрами

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

SELECT Заказчики.Название
FROM Заказчики
WHERE (((Заказчики.Город)=[город?]) AND ((Заказчики.Директор)=[директор?]))
ORDER BY Заказчики.Название;

Заметьте, хотя в явном виде предложение Parameters в операторе SELECT не отображается, но соответствующая коллекция Parameters, связанная с запросом формируется.

Ольга Гафарова
Ольга Гафарова

Добрый день. Подскажите формулы при решении задачи на рис. 2.2 в лекции №2. Закон Ома, какие должны использоваться формулы для I и R

Курс: Основы офисного программирования и документы Excel

Серегй Лушников
Серегй Лушников