Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-Запросы Access.doc
Скачиваний:
0
Добавлен:
04.08.2019
Размер:
78.85 Кб
Скачать

1. На основе таблицы “Сводка” создать запрос, результатом которого будет таблица, содержащая 3 поля: название судна, длительность хода и стоянки.

Технология создания запроса:

  • в окне Базы данных щелкните по ярлыку Запрос и далее по кнопке Создать или Создание запроса в режиме Конструктора;

  • в первом случае далее надо выбрать режим создания запроса: Конструктор.

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

  • далее откроется окно Конструктора запросов с диалогом для выбора таблиц для разработки запроса; см. рис.

  • окно разделено на 2 части: в верхней панели окна находятся списки полей тех таблиц или запросов, которые будут использоваться в этом запросе. Нижняя панель является бланком QBE, в которой создается запрос. Каждый столбец бланка относится к одному полю. Его можно перетащить обычным способом с помощью мышки. Бланк имеет несколько строк.

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

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

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

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

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

Условия отбора, записанные в строке Условия отбора таблицы параметров запроса, связаны между собой отношением "И". Отношением "ИЛИ" с ними связаны условия, записанные в строках ИЛИ таблицы параметров запроса. Таких строк может быть сколько угодно. Собственно для них и используется вертикальная линейка прокрутки окна таблицы параметров.

  • в данном задании в первую строку перетащите из списка полей, расположенных в верхней части окна имена полей: ns - в первый столбец, tx -во второй, ts- в третий. Можно щелкнуть по строке, тогда слева появится стрелка для выбора полей. Для включения всех полей в запрос в первую строку перетащите символ “звездочку”. Выполните запрос, нажав на панели инструментов кнопку с изображением восклицательного знака.

2.Изменим запрос: введем условие отбора для первого поля, обеспечивающее вывод части записей, а конкретно: выведем на экран только суда, у которых в поле ns находится балтийский-5 и в поле tx>100. Для этого:

  • в первую строку внесите имена полей, которые должны быть в таблице запроса;

  • в строку условия отбора напишите балтийский-5 в столбце с полем ns, а в столбце с полем tx - >100; если надо отобразить все суда на букву б, то в строку условие отбора запишите : б*. Система вас исправит: Like “б”.

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

Очень часто надо выбрать записи, где в одном из полей нет никакого значения, т.е. оно считается неопределенным (NULL). Для этого можно воспользоваться конструкцией SQL – is Null. Надо в условие отбора записать Is null или Is not null.

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

  • в первой строке бланка поле введите: длительность рейса: tx+ts. Можно подпись поля здесь не вводить, а ввести через контекстное меню, указав его в свойстве поля –подпись поля.

  • Если надо задать сложное выражение можно воспользоваться функцией IIF (выражение, значение если оно истина, значение если оно ложно)

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

  • в первую строку бланка перетащим имя поля ns;

  • вызовем контекстное меню и в нем выберем строку групповая операция, в результате в бланке появится строка групповая операция, а справа в строке слово: группировка. Так как мы группируем по названию судна, то в первом столбце оставим это слово. Для полей, которые не должны попасть в выборку, но по которым проверяется условие, в эту строку ставим «условие». Для других выберем одну из групповых функций, которые выбираются с помощью стрелки. Возможно использовать следующие функции: SUM, AVG, MIN, MAX,VAR, COUNT, First, Last и др. Для полей типа числовой и денежный можно использовать все эти функции. Для других только COUNT (определение числа совпадающих записей в группе), First (поиск первой совпадающей записи в группе), Last (поиск последней совпадающей записи в группе). Выберем функцию суммы для полей tx и ts.

  1. До сих пор условие отбора писали непосредственно в бланк QBE. Но если мы хотим использовать запрос для выдачи итого по разным проектам и тогда желательно, чтобы перед запросом система запрашивала об этом. Для этого надо построить запрос с параметром. Чтобы установить параметр, надо в строку условия отбора ввести имя или фразу, заключенную в квадратные скобки. Эта фраза и будет выводиться в диалоговом окне при выполнении запроса, поэтому фраза должна содержать напоминание пользователю о дальнейших действиях. Например, если мы хотим получать итоговые суммы по различным типам судов, то в квадратных скобках напишем: введите название типа.

После удаления какого-либо параметра из бланка запроса не забудьте удалить его в диалоговом окне «Параметры», иначе система будет требовать для него ввода значения. Если для параметра пользователь не ввел никакого значения, то можно заставить запрос выдать в этом случае все записи. Для этого надо под строкой Условие отбора, содержащий параметр [текст приглашения] ввести [текст приглашения] is null.

Если в качестве параметра надо задать интервал дат, то надо ввести следующее выражение: Between [введите начальную дату периода] and [введите конечную дату периода]

  1. Примеры условий отбора с использованием даты:

  • если надо найти все записи с сегодняшней датой, введите DATE(), >DATE(),<DATE()

  • чтобы выбрать все записи с датой из временного промежутка: between 1/2/99 and 15/9/99

  • чтобы найти все записи определенного месяца : */1/99, года */*/99

  • чтобы найти записи определенной даты, введите эту дату : 1/1/99

7.Вычисление итоговых сумм по всем записям таблицы.

Например, определить по таблице Сводка суммарное время хода. Для этого вставить два поля: название судна и время хода (можно и только время хода) . В строке групповые операции для названия поля поставить функцию Count. а для второго поля -Sum

  1. Запрос, использующий связь таблицы с самой собой (рекурсивное соединение)\

Предположим мы хотим выбрать те суда, у которых время хода равно времени стоянки. Для этого Добавим в запрос два раза таблицу «Сводка». Получим две таблицы – Сводка и Сводка_1. Построим между ними связь по полям TX и TS.

В бланк внесем следующие поля: ns, tx (из Сводка) и ts (из Сводка 1). И укажем условие tx=ts.