Главная / Банки и базы данных / Работа с представлениями и курсорами

Работа с представлениями и курсорами

ЛАБОРАТОРНАЯ РАБОТА № 4

1. ЦЕЛЬ РАБОТЫ

1. Научиться создавать и использовать представления.

2. ПРЕДСТАВЛЕНИЯ

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

Представление может быть частью проекта. Поэтому имеется два способа создания представлений – программный и с помощью конструктора. Программный способ создания представления осуществляется командой CREATE VIEW, в качестве операндов которой указываются имя создаваемого представления и SQL-запрос на формирование типа представления. Рассмотрим следующий пример:

CREATE SQL VIEW OTLSTUD;

AS SELECT *

FROM Students

WHERE Sredball > 4.5

В данном примере создается представление с именем Otlstud как результат выполнения SQL-запроса

SELECT *

FROM Students

WHERE Sredball > 4.5

Запрос выполняется на таблице Students с условием поиска Sredball > 4.5. Теперь построим работоспособную версию программы. Разместим на форме две кнопки: «Создать» и «Показать». Кнопка «Создать» будет создавать представление из имеющейся таблицы Students. Кнопка «Показать» будет отображать представление с помощью команды BROWSE. Запрограммируем событие Click для кнопки «Создать»:

CLOSE DATABASES

OPEN DATABASE Data1

CREATE SQL View Otlstud;

AS SELECT *;

FROM Data1!Students WHERE Sredball > 4.5

Запрограммируем кнопку «Показать» следующим образом:

USE OTLSTUD IN B

SELECT B

BROWSE

DELETE VIEW Otlstud

Имеется ряд вопросов. Во-первых, если нажать кнопку «Показать» до того, как будет создано представление, то возникает ошибка. Поэтому нужно предварительно проверить существование таблицы Otlstud. Для этого введем новую переменную типа PUBLIC, которую объявим в методе Init для формы:

PUBLIC VW

VW = 0;

Теперь перепишем кнопку «Создать»

CLOSE DATABASES

OPEN DATABASE Data1

IF VW = 0

CREATE SQL VIEW Otlstud;

AS SELECT *;

FROM Data1!Students;

WHERE Sredball > 0.5

ELSE

=messageBox(‘Представление создано’)

ENDIF

Перепишем кнопку «Показать»:

CLOSE DATABASE

OPEN DATABASE Data1

IF VW = 1

USE Otlstud IN B

SELECT B

BROWSE

DELETE VIEW Otlstud

VW = 0

ENDIF

2.1. Создание удаленного представления

Чем же отличается представление от простого SQL-запроса? Представление – это таблица, на которой можно выполнять операции поиска, замены и удаления записей. Наконец, на представлении можно в свою очередь выполнять SQL-запросы. Изменение данных в представлении автоматически ведет к изменению данных в тех таблицах, из которых построено представление. Но все же представления дают нам нечто большее, чем просто таблица. Это связано с тем, что представление может быть получено как результат выборки данных через соединение с удаленными компьютерами. В этой работе мы построим соединение со своим собственным компьютером и осуществим через построенное соединение выборки данных для представления. Идея состоит в следующем. Мы хотим создать соединение с базой данных Students, которая не входит в наш проект. Воспользуемся для этой цели конструктором проектов. Из вкладки Data найдем элемент Connection и нажмем кнопку New. Откроется окно конструкторов соединений. Нам нужно заполнить следующие поля:

DATASOURCE – тип источника данных (укажем Visual FoxPro);

USERID – идентификатор пользователя (имя, ассоциируемое с пользователями или группой);

PASSWORD – пароль;

DATABASE – имя базы данных (и таблицы).

Теперь нажмем кнопку New Connection и зададим имя драйвера с базой данных (Visual FoxPro). Нажмем кнопку OK.

Проверим корректность созданного соединения, нажав кнопку Verify Connection. Успешно созданное соединение включается в проект. Воспользуемся созданным соединением, которому по умолчанию система присвоит имя Connection1. Теперь мы должны при создании представления View указать и имя соединения:

CREATE SQL VIEW OTLSTUD;

CONNECTION Connect1;

AS SELECT *;

FROM Students;

WHERE Sredball > 4.5

Теперь мы сделаем работоспособную версию программы. Для этого создадим две кнопки: «Создать» и «Показать». Кнопка «Создать» создает соединение и представления:

CLOSE DATABASES

OPEN DATABASE e:datadata2

CREATE SQL VIEW Otlstud;

CONNECTION Connect1;

AS SELECT *

FROM Students;

WHERE Sredball > 4.5

Кнопка «Показать» программируется так

USE OTLSTUD IN B

SELECT B

BROWSE

Замечание. Настоятельно обращаем внимание, что база Data2 пуста и не содержит ни одной таблицы. Благодаря открытию соединения Connection1, получаем возможность создать вид из базы данных Data1!Students(!). Последнее. Необходимо в конструкторе соединений подключить имеющийся драйвер ODBC к вашему соединению. Чтобы это сделать, нажмите кнопку NewDataSource в окне конструктора соединений, а затем, выберите тип источника данных (база данных Visual FoxPro) и нажмите кнопку «Добавить». Присвойте имя источнику соединения. Теперь он будет автоматически добавлен в таблицу источников данных пользователя. В заключении заметим, что соединение можно создавать с удаленным компьютером (в этом случае представление называется удаленным и имеет атрибут Remote), а также с другими базами данных.

3. РАБОТА С КУРСОРАМИ

Рассмотрим кратко работу с курсорами (CURSOR). Курсор – это тоже временная таблица, как и представление. Создание курсора:

CLOSE DATABASES

CREATE CURSOR Students;

(Name C(20), Group N(4))

INSERT INTO Students (Name, Group);

VALUES (‘Sidorov’, 6201)

INSERT INTO students (Name, Group);

VALUES (‘Sidorov’, 6201)

BROWSE

CLOSE ALL

CLEAR

Команда CLOSE ALL очищает курсор и удаляет его из памяти. В чем же отличие курсора от представления? Принципиально лишь в том, что соединения работают с представлениями, а курсоры – нет.

4. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ

Создать представление на основе соединения и продемонстрировать на нем операции вставки, удаления и поиска записей.

5. ВОПРОСЫ

1. Что такое представление?

2. Что такое курсор и чем он отличается от представления?

3. Что такое соединение?

4. Как создать соединение?

5. Как создать представление и удалить его?

6. Как отобразить содержимое курсора и представления?

СОЗДАНИЕ ОТЧЕТОВ, ЛАБОРАТОРНАЯ РАБОТА № 5

1. ЦЕЛЬ РАБОТЫ

1. Изучение последовательности создания однотабличных отчетов с помощью мастера отчетов.

2. Освоение навыков создания сложных отчетов с помощью конструктора отчетов

2. МАСТЕР ОТЧЕТОВ

Создание отчета с помощью мастера сводится к выбору таблиц, входящих в отчет, определения списка полей отчета и порядка их размещения. Для создания отчета с помощью мастера необходимо в открытом проекте выбрать закладку Documents, затем выбрать группу Reports и нажать кнопку New. В открывшемся окне диалога New Report выбрать опцию Report Wizard. На экране откроется окно диалога, позволяющее определить требуемый тип отчета: One-to-Many Report Wizard – для таблиц с отношением один-ко-многим; Report Wizard – простой однотабличный отчет.

Рассмотри создание отчета типа Report Wizard.

На первом шаге необходимо определить, для какой таблицы создается отчет и какие поля в нем разместить. Для выбора базы данных и таблицы используются два связанных списка в области Databases and tables. Список Available fields содержит перечень всех полей выбранной таблицы. Из данного списка в список Selected fields переносятся все поля, которые необходимо поместить в создаваемый отчет.

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

Кнопка Grouping options позволяет определить интервалы группировки: исходя из полного значения поля таблицы, по первой букве значения поля, по 2, 3, 4 или 5 первым буквам значения поля таблицы.

Кнопка Summary Options позволяет задать итоговые значения отчета: итоговая сумма по соответствующему полю, итоговое среднее по соответствующему полю, итоговое количество строк, минимальное значение поля таблицы, максимальное значение поля. А так же задать опции итогов: область данных, промежуточные итоги по группам и конечные итоговые значения по отчету; область данных и конечные итоговые значения по отчету; только область данных.

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

На четвертом шаге указывается порядок размещения объектов в отчете и ориентацию страницы отчета.

На пятом шаге необходимо определить, требуется ли упорядочить отображаемые данные по какому-либо из полей. Поля, по которым осуществляется сортировка, содержатся в списке Selected fields, куда они переносятся из списка Available fields or index tag. Опции Ascending и Descending определяют тип сортировки выбранного поля: по возрастанию или по убыванию, соответственно.

На шестом шаге задается заголовок отчета в поле ввода Type a title for your report и выбирается один из трех вариантов дальнейшей работы с отчетом: сохранить отчет; сохранить и открыть его в конструкторе; сохранить и отправить его на печатать.

3. КОНСТРУКТОР ОТЧЕТОВ

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

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

Конструктор отчетов имеет панель инструментов Report Controls, описание которой приведено в таблице 3.1.

Таблица 3.1. Кнопки панели инструментов Report Controls

Наименование

Назначение

Select Objects

Является указателем выбора объектов отчета

Label

Размещает текст

Field

Размещает поля

Line

Рисует линии

Rectangle

Рисует прямоугольники

Rounded Rectangle

Рисует прямоугольник со скругленными краями

Picture/ActiveX Bound Control

Помещает в отчет рисунок

Button Lock

Закрепляет выбор кнопки

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

3.1. Типы полос окна конструктора отчета

Отчет может содержать полосы перечисленных в таблице 3.2 типов. Тип полосы определяет, когда и где будут печататься объекты полосы.

Таблица 3.2. Типы полос

Наименование

Описание

Title (Титул)

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

Page Header (Верхний колонтитул)

Информация, которая печатается в начале каждой страницы. Например, название отчета, текущая дата, номер страницы и т. п.

Group Header (Группа: сверху)

Информация, используемая при группировке. Для идентификации информации, содержащейся на каждом уровне группировки

Detail (Детали)

Информация полей из таблицы или результат вычислений над полями таблицы

Group Footer (Группа: снизу)

Итоговая информация по группе

Page Footer (Нижний колонтитул)

Информация, содержащая название отчета, дату, номер страницы и итоговые значения по данным текущей страницы

Summary (Итоги)

Информация, содержащая общие суммы или текст, подводящий итог содержимого отчета

Можно управлять высотой полосы для добавления в нее текста, полей или просто, чтобы добавить в отчет пробелы.

3.2. Создание стандартного отчета

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

1. Определение окружения;

2. Размещение текста;

3. Размещение полей;

4. Размещение линий, прямоугольников и рисунков;

5. Перемещение объектов, а также перемещение областей. Которые могут содержать любые объекты отчета;

6. Сохранение отчета.

Первоначальное размещение полей данных можно облегчить, используя средство Quick Report конструктора отчетов, называемое стандартным отчетом. Стандартный отчет – это средство, которое автоматически помещает выбранные поля в пустое окно конструктора отчета. Для завершения создания отчета необходимо лишь требуемым образом изменить расположение полей, а также вставить дополнительный текст и другие объекты.

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

1. Находясь в конструкторе отчета, выполнить команду меню Report | Quick Report;

2. В окне диалога Open выбрать таблицу, для которой создается стандартный отчет;

3. В окне диалога Quick Report выбрать вариант расположения полей в отчете из двух предложенных: в столбец или в строку.

4. Выбрать поля для отчета с помощью кнопки Fields.

Отчет будет содержать все необходимые поля, которые будут использоваться в качестве черновика отчета. Кроме того, в полосе Page Footer размещается поле с функцией DATE() и поле с системной переменной _PAGENO (номер страницы).

3.3. Установка среды окружения

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

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

1. Выполнить команду меню View | Data Environment основного меню;

2. Выбрать команду Data Environment контекстного меню.

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

3.4. Размещение текста

В конструкторе отчетов текст рассматривается в качестве объекта. Его можно перемещать, выделять, копировать в буфер или удалять.

Для ввода или исправления текста в отчете необходимо выбрать инструмент Label и установить курсор в то место, где необходимо разместить или исправить текст. После этого можно внести необходимые добавления или изменения. Текст может состоять из нескольких строк.

Для изменения шрифта и цвета текста используется команда Format | Font. Если дважды нажать мышью на выбранный текст, откроется окно диалога Text, где можно определить условие печати для текста, а также задать его относительное расположение в полосе: изменение позиции текста при изменении размеров окружающих его полей; сохранение постоянной позиции относительно верхней границы полосы; сохранение постоянной позиций относительно нижней границы полосы.

3.5. Размещение полей

Для размещения поля необходимо выбрать инструмент Field на панели инструментов Report Controls, установить курсор в соответствующее место окна конструктора и установить требуемый размер поля. На экране появится окно диалога Report Expression.

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

Кнопка Calculations используется для вычисления статистических значений полей отчета. Как правило, такие поля размещаются в колонтитулах, полосах группы и в итоговой части отчета.

3.5.1. Определение выражения поля

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

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

Для проверки правильности выражения вычисляемых полей используется кнопка Verify.

3.5.2. Формат

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

3.5.3. Расположение поля в полосе

Переключатель Field position окна диалога Report Expression предназначен для управления расположением и характеристиками поля в полосе точно также как и для текста. Флажок Stretch with overflow разрешает растягивать объект для размещения данных.

3.5.4. Размещение итогового поля

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

Для определения поля в качестве итогового необходимо в диалоговом окне Report Expression нажать кнопку Calculations. При этом открывается окно диалога Calculate Field, в котором может быть выбрана математическая операция над значением выражения, определенного для данного поля.

Окно диалога Calculate Field содержит опции перечисленные в таблице 3.3, которые определяют вычисления, выполняемые над значениями выражения поля:

Таблица 3.3. Опции диалога Calculate Field

Опция

Назначение

Nothing

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

Count

Вычисляется количество значений поля (сами значения поля не используются)

Sum

Вычисляется итоговая сумма значений поля

Average

Вычисляется среднее арифметическое значений поля

Lowest

Отображается наименьшее значение поля

Highest

Отображается наибольшее значение поля

Standard deviation

Возвращается квадратный корень из дисперсии

Variance

Возвращается статистическая величина отклонения отдельных значений поля от среднего в группе

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

3.6. Группировка данных

Индексированные таблицы или сортировка позволяют распечатывать записи в требуемом порядке. Однако этих средств далеко не всегда оказывается достаточно. На практике достаточно часто возникает необходимость объединять записи в группы. Для этой цели используются команда меню Report | Data Grouping или команда Grouping контекстного меню, которые позволяют создавать до 20 уровней вложенности групп.

В результате выполнения команды Grouping открывается окно диалога Data Grouping, которое содержит весь список ранее созданных групп. Здесь можно редактировать или удалять имеющиеся группы, а также добавлять новые. Для ввода выражения группировки можно воспользоваться построителем выражений. В окне диалога Data Grouping можно установить следующие свойства группы:

Start group on new column – начинает новую колонку при каждом изменении группы;

Start each group on a new page – начинает новую страницу при каждом изменении группы;

Reset page number to 1 for each group – начинает новую страницу при каждом изменении группы, а нумерацию страниц – с 1;

Reprint group header on each page – размещает верхнюю полосу группы после верхнего колонтитула страницы, если группа занимает несколько страниц;

Start group on new page when less than – устанавливается минимальное расстояние от нижней границы страницы, на котором может печататься верхняя полоса.

4. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ

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

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Расскажите кратко последовательность действий при создании отчета с помощью мастера.

2. Какие типы полос используются в отчетах и для чего они предназначены?

3. Как определить выражение поля?

4. Как осуществляется группировка данных?

5. Как определяются итоговые значения?