Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_po_informatike_2003_c_uvelichennym_og....doc
Скачиваний:
31
Добавлен:
12.11.2018
Размер:
5.3 Mб
Скачать

§ 10 Построение и выполнение запросов на выборку данных

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

Любой запрос в MS Access реализуется на специальном языке запросов SQL (Structured Query Language - Структурированный Язык Запросов).

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

Для начинающих пользователей система предоставляет специальное средство - графический построитель запросов QBE (Query By Example - Запрос По Образцу). Он менее гибок, чем SQL, но позволяет оперативно и в наглядной форме сформировать большинство запросов к БД.

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

Конструирование запроса.

Пусть нам необходимо получить (и распечатать) справочную информацию по двум группам культур : "Деревья" и "Кустарники" со сроком созревания - после 07.18.

В таблицу - результат мы не будем включать поля с фактическими данными, но добавим вычисляемое поле "Урожайность", значение которого вычисляется следующим образом: ("Урожай"/"Кол-во"). Поля с кодом группы и кодом культуры будут использованы только для отбора записей, но выводиться на экран не будут. Вместо кода группы будет выводиться ее название из таблицы "Группы".

  • Запрос будем создавать на основе двух наших таблиц.

Не открывая таблиц, перейдите на вкладку "Запросы" и нажмите кн. "Создать". Система выведет на экран ДО "Новый запрос". В этом окне выберите пункт "Конструктор" и нажмите кн. "ОК".

Откроется ДО "Запрос на выборку", а, если таблицы были закрыты, то ДО "Добавление таблицы". Если окно не появилось, то введите команду «Запрос / Добавить таблицу». В этом ДО выберите таблицы "Группы" и "Культуры" (после выбора нажимайте кн. "Добавить"). Вернетесь в ДО "Запрос на выборку" (кн. «Закрыть»).

ДО "Запрос на выборку" состоит из двух частей (см. рисунок 4-9):

  • в верхней части находятся окошки таблиц с перечнем полей;

  • в нижней части - бланк конструирования запроса.

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

Если строка "Имя таблицы" не выводится в бланке, то введите команду "Вид / Имена таблиц" и включите эту опцию. Если верхнее поле не содержит окошка таблицы, то нажмите ПКМ на этом поле и через контекстное меню введите команду "Добавить таблицу", а в следующем ДО выберите нужную таблицу и нажмите кн. "Добавить".

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

Выполнить эту операцию можно разными способами.

  1. Перейти в бланк по F6. Перейти в строку "Поле" бланка в нужный столбец. Открыть список полей (кн.). Выделить в списке нужное поле и нажать Enter (это – самый простой и надежный способ).

  2. Перетащить поле в нужную позицию бланка мышью. При перетаскивании указатель мыши превращается в прямоугольник.

  • Используя разные способы, "переведите" в строку «Поле» бланка необходимые поля. Из таблицы "Группы": поле "Обозн"; из таб. "Культуры" поля: "Код_Гр", "Код_Культ", "Назв_к", "Созр1", "Созр2", "Почвы1", "Почвы2", "Ед_измер".

Замечания.

  1. Если Вы ошиблись при определении поля в бланке, то выделите это поле в соответствующем столбце бланка и введите команду "Правка / Удалить" или нажмите кн. Delete. После этого повторите определение поля заново.

  2. Если Вы случайно закрыли окно конструктора, то для продолжения работы с ним: перейдите в окно базы данных, в нем откройте вкладку "Запросы", укажите имя запроса и нажмите кн. "Конструктор".

  3. Если Вы не сохраняли запрос и не дали ему имя при закрытии (даже того, которое предлагает система), то после выхода из системы - запрос будет потерян.

  4. Поля, выводимые в наборе записей запроса наследуют свойства, заданные в исходной таблице, но Вы можете переопределить некоторые из них: "Описание", "Формат поля", "Маску ввода", "Подпись" (заголовок столбца в результирующей таблице). Чтобы задать новые свойства некоторого поля, выделите его в бланке и введите команду "Вид / Свойства". На экране появится окно свойств, но без заполненных позиций (без наследования).

Создадим вычисляемое поле "Урожайность", значение которого определяется следующим образом: Выражение1 = [Культуры]![Урожай]/[Культуры]![Кол-во], где "Выражение1" – условное название нового поля "Урож-ть". После знака равенства записано арифметическое выражение (на языке системы), определяющее частное от деления значения поля "Урожай" на значение поля "Кол-во" из таблицы "Культуры".

  • Воспользуемся услугами "Построителя" выражений.

  1. Установите курсор в "поле" нового столбца бланка (следующего за "Ед_измер"). Нажмите ПКМ и в меню щелкните на пункте "Построить" или воспользуйтесь соответствующей кнопкой на СПИ. Откроется ДО "Построитель выражений" (см.Рисунок 4-8)

Рисунок4-8. Окно построителя выражений.

  1. В нижнем левом окошке откройте список таблиц  2ЛКМ на значке "+" объекта "Таблицы".

  2. Выберите таблицу "Культуры". В среднем окошке появится список полей.

  3. Выделите поле "Урожай" и нажмите кн. "Вставить". В верхнем окошке построителя появится запись: «[Культуры]![Урожай]».

  4. На панели символов найдите кнопку со значком "/" (деление) и нажмите ее.

  5. Далее выделите поле "Кол-во" и нажмите кн. "Вставить". Будет построено нужное нам выражение для вычисления урожайности культур. Нажмите ОК. В бланке запроса появится соответствующая запись (в "поле" бланка будет видна только часть всего выражения).

  • Для проверки правильности построения запроса на данном этапе – выполните запрос: "Запрос  запуск" или перейдите в режим отображения таблицы. Оцените свои построения и обратите внимание на заголовок и некоторые значения вычисляемого поля. Допустим, нас не устраивает заголовок столбца и формат отображения значений. Чтобы изменить данные свойства столбца результирующей таблицы – вернитесь в конструктор запроса.

  • Для изменения свойств поля "Выражение1" наведите курсор на любую ячейку этого поля бланка и нажмите ПКМ. В контекстном меню выберите пункт "Свойства". Откроется одноименное ДО.

  • На вкладке "Общие" установите: "Формат": "фиксированный"; "Число дес. знаков": 2; "Подпись": "Урож-ть" (без кавычек). Закройте ДО и еще раз проверьте результат изменений в режиме таблицы. Вернитесь в конструктор.

На следующем шаге надо определить: какие поля будут отображаться в таблице и по каким полям следует проводить сортировку.

Для "отключения" полей необходимо (щелкнув ЛКМ) убрать галочку в строке "Вывод на экран".

  • Отключите вывод на экран кода группы (поле "Код_Гр") и кода культуры ("Код_культ").

Для определения сортировки надо перейти к соответствующему полю бланка, открыть список и выбрать вид сортировки.

  • Укажите в строке "сортировка" упорядочение в возрастающем порядке по полям "Код_Гр" и "Код_культ".

  • Перед выполнением следующих упражнений, сохраним наш запрос.

  • Введите команду "Файл / Сохранить" и ДО "Сохранение..." укажите имя запроса или оставьте то, которое предлагает система ("Запрос1"). Имя - запомните.

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

Вариант окна конструктора приводится на рисунке 4-9. Содержание его соответствует основному запросу.

Замечание.

Если Вы закроете запрос и опять откроете, то неотображаемые поля в бланке будут смещены вправо и помещены после поля "Выражение1" (см. рисунок 4-9 ).

Следующий шаг - конструирование критерия отбора записей.

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

Логические выражения.

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

В общем виде, простейшее ЛВ имеет вид: В1 ОП В2, где В1 и В2 - выражения числового или текстового типа или поля таблицы (В1 и В2 называются операндами); ОП - операция сравнения из множества: { = - равно, > - больше, < - меньше, >= - больше или равно, <= - меньше или равно, <> - не равно}.

Более сложные ЛВ формируются с помощью логических операторов:

AND - логическое "И".

OR - логическое "ИЛИ".

Выражение A AND B имеет значение "Истина" (И), только в том случае, если и А и В имеют истинное значение. Во всех остальных случаях значение выражения - "Ложно" (Л).

Выражение A OR B имеет значение "Ложно" только тогда, когда ложны значения обоих операндов (А и В).

Вид логического выражения, которое используется в условиях отбора записей, немного отличается от общего. Дело в том, что в качестве одного из операндов (обычно В1) выступает поле таблицы. Поэтому выражение получается "укороченным". Например, если надо отобрать записи, соответствующие огородным культурам (двухлетним и однолетним), то в соответствующей строке бланка поля "Код_Гр" необходимо записать условие (без кавычек): " = 4 Or = 5 ".

  • Пример 1. Введите это условие в соответствующую строку поля и выполните команду "Запрос / Запуск" или нажмите кн. с символом "!" на СПИ.

  • Оцените действие команды и вернитесь в режим конструктора Удалите условие (сотрите его кл. "Delete").

Если в условие отбора включается несколько полей и все ЛВ (для каждого поля) находятся в одной строке, то все они объединяются логической операцией AND. Запись отбирается в запрос, если значение всего ЛВ принимает значение "Истина".

  • Пример 2. Выполним отбор записей, соответствующих первой группе (деревья) со сроком созревания - от 08.01 и pH >= 5,5.

Для этого введите: в поле "Код_Гр" условие "=1", в поле "Созр1"- условие ">=08.01", в поле "Почвы1" - условие ">=5,5". Выполните запуск запроса. Оцените результат. Сотрите условия в бланке запроса.

Если для поля задается несколько условий, объединенных операцией "ИЛИ" (OR), то каждое условие записывается в отдельную строку "ИЛИ" бланка.

  • Пример 3. Установите первое условие, используя второй способ: в первую строку "Условие отбора" введите ( для поля "Код_Гр") "=4", а во вторую строку ("ИЛИ") - условие "=5". Выполните запрос, оцените результат и удалите условия из бланка.

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

Например, если нам необходимо отобрать записи с культурами, у которых значения поля "Почвы от" ("Почвы1") находятся в диапазоне от 5,6 до 6,2, то мы должны ввести условие: ">=5,6 And <= 6,2".

  • Введите это условие и выполните запрос.

  • Удалите условие.

Основной запрос.

Сформируем условия отбора для нашего (исходного) запроса:

  • По полю "Код группы" ("Код_Гр") мы должны отобрать записи со значениями равными 1 или 2.

  • Поле "Срок созревания от..." ("Созр1") - текстовое. Нижняя граница, определяющая условие отбора может быть записана в виде ">=07.18".

Полное логическое выражение, соответствующее нашему случаю будет иметь вид:

(Код_Гр =1 OR Код_Гр =2) AND (Созр1>= 07.18).

Из методических соображений мы преобразуем его к виду:

(Код_Гр=1 AND Созр1 >= 07.18) OR (Код_Гр=2 AND Созр1 >= 07.18).

  • Введем условия в бланк запроса:

  • в соответствующей строке поля "Код_Гр" укажите: "=1" и в поле "Созр1": >=07.18;

  • перейдите в строку "ИЛИ" и укажите в соответствующих полях "=2" и ">=07.18".

Рисунок 4-9. Окно конструктора запросов.

  • Выполните запрос. Результат представлен в таблице 8. Запрос сохраните.

Таблица 8.

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

Обозн. Гр.

Название

Созр.-

от

Созр. - до

Почвы_от

Почвы_до

Ед_измер

Урож-ть

ДЕР.__

Вишня осенняя

07.20

08.10

5,80

6,30

Дер.

5,00

ДЕР.

Груша осенняя

09.20

09.15

5,40

6,20

Дер.

5,00

ДЕР.

Яблоня зимняя

09.25

10.10

5,50

6,00

Дер.

20,00

ДЕР.

Яблоня летняя

08.01

08.25

5,50

6,00

Дер.

15,00

ДЕР.

Яблоня осенняя

09.10

09.20

5,50

6,00

Дер.

7,50

КУСТ.

Смородина черная

07.20

07.25

5,60

6,00

Куст.

2,00

Отчет.

Создайте в отчете раздел "Создание и выполнение запросов.".

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]