Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД ACCESS 2000.doc
Скачиваний:
37
Добавлен:
15.05.2015
Размер:
1.83 Mб
Скачать

Запросы

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

Запрос может быть сформулирован в среде MSAccessна двух языках

  • QBE(Query By Example) - язык запросов по примеру (образцу), предназначенный для пользователей - не программистов.

  • SQL(Structured Query Language) - структурированный язык запросов, используемый пользователями - программистами в программах приложений наVBA (Visual Basic for Application). Язык SQL имеет большие возможности по сравнению с языком запросов QBE. Это означает, что все, что можно сформулировать на языке QBE, можно сформулировать и на SQL, но не наоборот. Например, язык QBE не позволяет создавать и редактировать структуру таблицы и пр

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

В

иды Запросов:

  • Запрос на Выборку --выбирает данные из взаимосвязанных таблиц и других запросов. Результатом является таблица , которая существует до закрытия запроса.

  • Запрос на Создание Таблицы -- основан на запросе на выборку , но результат сохраняется в таблице

  • Запросы на Обновление , Добавление , Удаление --Запросы действия , в результате которых изменяются данные в таблице.

  • Перекрестный Запрос– предназначен для группирования данных и представления их в компактном виде, удобен для анализа.

Разработка Запросапроизводится врежиме Конструктора. Для создания запроса выделите объект Запросы, нажмите кнопкуСоздать и выберите режимКонструктора.Укажите используемые в запросе таблицу или таблицы (как при работе со схемой данных).

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

При заполнении бланка запросов по образцу необходимо:

  • ·В строку Поле включить имена полей , используемых в Запросе.

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

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

  • выбрать нужное поле из списка в строке Полевнизу бланка запроса

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

  • ·В строке Вывод на экранотметить поля , которые должны быть включены в результирующую таблицу (Можно для поля задать условие отбора , но значение поля не отображать на экране)

  • ·В строке Условие отбора задатьусловия отбора записей (например >100 ,Иванов , Like С*, between 10 and 20)

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

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

Для просмотра запроса в режиме SQLнеобходимо воспользоваться пунктом менюВид – Режим SQL

Примеры условий отбора:

>10

больше 10

< >2

не равно 2

Between 5 And 10

больше 5, но меньше 10

Date( )

за текущую дату

< Date -30

месяц назад

Between Date( ) And Date( ) - 90

в течении последних 90 дней

Between Date( ) And DateAdd(‘’м’’;-3;Date( ))

в течении последних трех месяцев

Between 01.01.97 And 31.12.97

За 1997 год

Иванов (‘‘Иванов’’)

только для Иванова

И* (Like ‘’И*’’)

все клиенты фамилия , которых начинается на И

Like “[!ъ]*”

Строка не должна начинаться со знака ъ

[Введите Фамилию Сотрудника]

Просит задать фамилию

Between [Введите Дату1] And [ Введите Дату2]

возможность самому задавать временной интервал

Between 01.01.00 & [Год] And 31.12.00 & [Год]

За введенный с клавиатуры год

In(1;10;50;100)

1 или 10 или 50 или 100

In(“Минск”; “Киев”)

Минск или Киев

Null.

(пусто)- не введено никакого значения

Not IsNull

(не пусто), т. е. значение введено

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

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

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

Примеры вычисляемых полей

Стоимость: [Товары]![Цена]*[Продажи]![Количество]

Клиенты: [Клиенты]![Фамилия] & ‘‘ ’’&[ Клиенты]![Имя]& ‘‘ ’’& [Клиенты]![Отчество]

Сформировать выражение можно при помощи Построителя выражений ,который запускается из контекстного меню , связанного со строкой Условие отбора на бланке или при помощи соответствующей кнопкена панели инструментов. При составлении выражений имена полей заключаются в квадратные скобки , символьные константы - в кавычки , имена объектов БД отделяются от полей "!"

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

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

Параметрические Запросы.Конкретное значение поля в условии отбора может вводится непосредственно в бланк Запроса или задаваться пользователем при выполнении Запросы в диалоговом окне. Например используя таблицу КЛИЕНТЫ можно создать параметрический запрос , позволяющий просматривать только клиентов то из одного города , то из другого города. Для этого в строку Условие отбора ввести [Назовите город] для поля Город. Результат можно просмотреть в режиме таблицы .

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

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

Тот же запрос в режиме Конструктора

Для создания запроса необходимо

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

  • Из таблицы Товары включить в запрос поле Название

  • Создать вычисляемое поле Стоимость

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

  • Для поля Стоимостьвыбрать групповую операциюSum, а для поля Наименование —.Группировка

Внимание! Группировка- означает, что данное поле является полем группирования (устанавливается по умолчанию)

Sum- суммирование всех значений поля по группе данных

Avg- среднее значение поля по группе

MinилиMax- минимальное или максимальное значение поля в группе

Count- количество записей, входящих в группу

StDev-среднеквадратическое отклонение

Var- дисперсия

FirstилиLast- первое или последнее значение поля в группе

Выражение- позволяет ввести выражение вместо имени поля в строке Поле бланка запроса

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

Если группировка производится по нескольким полям , то слово Группировка должно быть в каждом из них

Совет!Для подсчета общей стоимости используется групповая операцияSum, а для подсчета количества заказов –Count.

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

Внимание!Перекрестный запрос может содержатьнесколько полей с заголовками строк, но толькоодно поле с заголовками столбцовили значение

Пример запрос, показывающего для каждого товара в каком объеме, каким клиентом и на какую сумму он был закуплен с разбивкой по товарам

Тот же запрос в режиме Конструктора

Создание перекрестного запроса

  • создать запрос на выборкуданных на основе таблицыТоварыиКлиенты, Продажи, отобразив в динамическом наборе поля:Фамилия и Название

  • Создать два вычисляемых поляСтоимость.

  • преобразовать запрос на выборку в перекрестный запрос при помощи пункта меню Запрос - Перекрестный или кнопки Тип запроса на панели Инструментов

  • выбрать Sum в строкеГрупповая операциядля вычисляемых полей

  • заполнить строку перекрестная таблица.

Для отображения в поле Стоимость символа денежной единицы

  • Выделите поле Стоимость

  • Воспользуйтесь командой Свойствоиз Контекстного меню

  • В стоке формат установите Денежный

Для сохранения результата запроса используется Запрос На Создание Таблицы. Он основан на Запросе на выборку , но результат сохраняется в таблице. Запрос на выборку можно преобразовать в запрос на создание таблицы при помощи пункта менюЗапрос—Создание Таблицы.

Запросы на изменение данных

  1. Создание запроса на добавлениенескольких записей из другой таблицы:

  • создать запрос на выборку данных из таблицы-источника (откуда)

  • преобразовать запрос на выборку в запрос на добавление данных при помощи пункта меню Запрос - Добавление

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

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

Заказы до 01.01.97 из таблицы Продажидобавляются в таблицуСтарые Продажи

  1. Создание запроса: на удаление

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

  • преобразовать запрос на выборку в запрос на удаление записей при помощи пункта меню Запрос - Удаление

На бланке запроса появится строка Удаление, которая будет заполнена автоматически. Если в строкуПолебыли вынесены все поля (с помощью символа *), то для этого столбца в строкеУдалениебудет указано словоИз, а в столбце, для которого было написано условие отбора, в строкеУдалениебудет указано словоУсловие.

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

  1. Создание запроса: на обновление (корректировку) данных

  • создайте запрос на выборку данных

преобразуйте запрос на выборку в запрос на обновление данных при помощи пункта меню Запрос - Обновление

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

Формы

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

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

Форма может быть

  • однотабличной- источник данных одна таблица или запрос

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

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

Для создания формынеобходимо выделить объект Формы и нажать кнопку Создать , выбрать один из режимов создания форм и указать таблицу или запрос на основе которых будет создаваться форма .

Способы создания форм

  • Конструкторпозволяет создавать форму вручную

Внимание! Форму без источника данных можно создавать только в этом режиме

  • Автоформа- автоматический и самый быстрый способ создания толькооднотабличнойформы. При этом в форме отобразятся данные из всех полей таблицы - источника данных.

  • в столбец: на одной странице располагаются данные только из одной текущей записи. Такая форма называется простой.

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

  • табличная: данные представляются в виде таблицы, оформленной в определенном мастером стиле. По внешнему виду не отличается от обычной таблицы.

Внимание!Табличная и ленточная формы легко преобразуются друг в друга

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

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

  • Своднаятаблица: создается форма специального вида, отображающая некоторую статистическую информацию.

Структура формы

Для удобства расположения элементов управления

на форме отображается сеткаилинейка

Структуру готовой формы можно просмотреть в режиме Конструктора.