Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БД / Базы данных / Лабораторные работы / Лабораторная №9(Запросы в Access)

.doc
Скачиваний:
79
Добавлен:
30.05.2015
Размер:
458 Кб
Скачать

Лабораторная работа № 9.

Тема: Запросы в Access.

С помощью запросов можно

  • просматривать,

  • анализировать,

  • изменять данные.

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

    • Найти все продукты типа Мюсли.

    • Найти продукты с калорийностью меньше 200

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

Чтобы создать запрос в Access необходимо 1) …в окне базы данных открыть вкладку Запросы 

2) …и создаете запрос с помощью конструктора.

Графический способ задания запросов.

Конструктор позволяет задавать запросы на QBE (Query by Example)– это графический способ указания, какую информацию мы хотим отобрать.

Окно графического редактора будет выглядеть в режиме конструктора так:

Рис.1

Сам бланк запрос представляет собой две части:

- в верхней части указываются таблицы, участвующие в запросе;

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

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

    • В первой строке бланка запроса Поле щелчком мыши вызвать появление кнопки списка и выбрать из списка нужное поле;

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

    • Дважды щелкнуть на имени поля таблицы в схеме данных запроса

    • Для включения в запрос всех полей таблицы можно переместить с помощью мыши в соответствующую строку бланка запроса все поля из списка полей в схеме данных запроса или дважды щелкнуть на символе * в этом списке

Очень важно научиться задавать условия, накладываемые на значения полей.

Условие записывается в строке Условие отбора!

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

Примеры задания условий:

Для числовых полей.

= 100

>10

<=25

Для текстовых полей.

= Абрикос

Like “А*”

Если вы введете условия на значения в двух колонках, то это потребует условия будут

Задание 1.

(Запрос по одной таблице без условия)

На основе таблицы Магазины создайте простой запрос на выборку, в котором должны отображаться Название магазина, Название улицы и Фамилия директора. Данные запроса отсортируйте по Фамилии директора. Этот запрос показан на рисунке 1. Сохраните запрос и посмотрите таблицу, получающуюся в результате запроса.

Задание 2.

(Запрос по одной таблице с условием)

На основе таблицы Продукты создать запрос для получения информации о Названиях продуктов с калорийностью больше 200.

Задание 3.

На основе таблицы Продукты создать запрос для получения информации о Названиях продуктов с калорийностью между 200 и 350. (В условии записываете Between 200 and 350).

Задание 4.

На основе таблицы Магазины – список магазинов, которые расположены в Кировском районе.

Задание 5.

На основе таблицы Магазины – список магазинов, которые расположены на проспектах Кировского района.

Задание 6.

Найти Заказы, у которых ДатаНазначения - январь. Условие надо записать так: Like “*.01.*”

Запросы с вычисляемыми полями.

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

Имя: Выражение

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

Познакомьтесь с некоторыми функциями для работы с полями Дата/Время:

Название

Описание

Пример

Date()

функция возвращает текущую дату

DAY (дата)

возвращает значение дня месяца в диапазоне от 1 до 31

Day(ДатаРазмещения) – день даты размещения,

Если хотите отобрать заказы третьей декады –

Day(ДатаРазмещения)>20

Month(дата)

возвращает значение месяца в диапазоне от 1 до 12

Month(ДатаРазмещения)

Year(дата)

возвращает значения года

Weekday(дата)

возвращает значение дня недели

DatePart("параметр", дата)

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

“YYYY” – год

“Q” – квартал

“WW” – номер недели в году

“M” - месяц

“Y” – день года

“D” - день

“W” день недели

DatePart("M", [ДатаРазмещения]) – возвратит месяц даты размещения

DateAdd("параметр", число, дата)

Функция позволяет прибавить к дате временной интервал и получить новую дату. Типы временного интервала, такие же как у функции DatePart

DateAdd("d"; 10, ДатаРазмещения)

- вернет дату на 10 дней большую, чем дата размещения

DateDiff("d", дата1, дата2)

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

DateDiff("d"; [ДатаРазмещения]; [ДатаИсполнения])

Mounth()

Функция вычисляет номер месяца

Month(ДатаРазмещения)- вернет номер месяца даты размещения заказа

MounthName(число)

Возвращает имя месяца, параметр должен иметь числовое значение

MounthName(Month(Date())) – название месяца из текущей даты

WeekDay(дата)

Возвращает номер дня недели

WeekDay(Date()) – возвращает номер дня недели из даты

WeekDayName(число)

Возвращает имя дня недели

WeekDayName(WeekDay(Date())) – название дня недели из текущей даты

Для обращения к функции запишите ее имя, а в круглых скобках задайте ее параметры. Для каждой функции свой набор параметров!

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

Например, синтаксис (правило обращения) функции DateDiff следующий:

DateDiff(interval;date1; date2[, firstdayofweek[, firstweekofyear]])

Первые три параметра объяснялись выше, а параметры firstdayofweek и firstweekofyear необязательные (в синтаксисе это указывается тем, что они располагаются за квадратными скобками). Если эти параметры опущены, то их значения подставятся из значений по умолчанию.

Эти параметры позволяют задать следующую информацию:

Firstdayofweek (задает, что считать первым днем недели) может иметь значения от 0 до 7

0

Использует установки системы по умолчанию

1

Воскресенье (по умолчанию)

2

Понедельник

3

Вторник

4

Среда

5

Четверг

6

Пятница

7

Суббота

Firstweekofyear (задает, что считать первой неделей года) может иметь значения от 0 до 7

0

Использует установки системы по умолчанию

1

Начинается с недели, в которой есть день 1 января (по умолчанию).

2

Начинается с первой недели, в которой есть, по крайней мере, 4 дня нового года

3

Начинается с первой полной недели года

Проще всего получить справочную информацию по синтаксису функций можно следующим образом:

  1. Вызвать построитель выражений с помощью кнопки (курсор должен находиться в области Поле или Условие на значение)

  2. В левом окне Построителя раскрыть папку Функции –> Встроенные функции

  3. Выбрать во втором столбце нужную группу функций

  4. Выбрать в последнем столбце нужную функцию и нажать кнопку Справка в окне построителя выражений.

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

Задание 7.

Найдите срок исполнения заказов. Создайте вычисляемое поле Срок исполнения как показано в примере.

Задание 8.

Измените сделанный запрос и найдите заказы, которые исполнялись больше 10 дней (для вычисляемого поля Срок исполнения наложите ограничение > 10) .

Задание 9.

Найдите заказы, которые не оплатили (наложить условие IS NULL на поле ДатаОплаты)

Задание 10.

Добавьте к основным полям таблицы Заказы названия дня недели для даты размещения заказа. Для этого надо воспользоваться двумя функциями WeekDayName() и функцией WeekDay(). Посмотрите какие параметры у этих функций – и вы увидите, что функция WeekDayName имеет числовой параметр (то есть ей надо задать значение номер дня недели от 1 до 7), поэтому и необходимо из даты сначала выделить номер дня недели, а затем по номер определить имя дня недели. В результате выражение будет записываться так:

День размещения заказа: WeekDayName(WeekDay(ДатаРазмещения))