Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Practicum_DB_College.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

I. Создание и тестирование запросов.

  1. Запустите Database Desktop.

  2. Установите рабочий каталог Books, с которым DBD работает по умолчанию, используя команду меню File / Working Directory в окне DBD. Для создания нового запроса вызовите команду меню File / New / SQL File.

  3. Составьте на языке SQL текст запроса, соответствующего п. 1 задания (см. выше) и введите его в окне для ввода запроса. Запустите запрос на выполнение, используя кнопку «Run SQL» на панели инструментов в окне DBD. Если DBD выдает сообщения о синтаксических ошибках (т.е. о нарушениях правил языка SQL в тексте запроса), то проанализируйте текст запроса и исправьте ошибки. Если запрос успешно выполнен, то закройте результаты и сохраните текст запроса как файл с расширением .sql (например BksDr.sql) в рабочем каталоге.

  4. Повторите указанные действия (начиная с вызова команды меню File / New / SQL File) для каждого из пп. 2-25 задания.

II. Создание формы для работы с запросами.

Запустите Delphi и откройте приложение TaskBooks. Создайте новую форму с помощью команды File/New Form. Сделайте заголовок формы «Запросы» (свойство Caption) и разместите на ней следующие компоненты:

  1. 3 стандартных кнопки (Button1, Button2, Button3). Сделайте надписи этих кнопок (свойство Caption) OpenQuery, CloseQuery, Exit.

  2. В верхней части окна формы добавить метку (Label1) и непосредственно под ней комбинированный список (ComboBox1). Сделайте надпись (свойство Caption) на этой метке «Список запросов»

  3. Ниже добавить метку (Label2) и непосредственно под ней многострочный редактор (Memo1). Задайте отображение полос прокрутки у компонента Memo1, установив свойство ScrollBars – ssBoth. Сделайте надпись (свойство Caption) на этой метке «Текст запроса».

  4. Ниже добавить метку (Label3) и непосредственно под ней компонент DBGrid1. Сделайте надпись (свойство Caption) на этой метке «Результаты запроса».

  5. Добавить на форму невизуальные компоненты Query1, DataSource1. Установите свойство компонента DataSource:

DataSet (имя набора данных) – Query1.

Установите свойство компонента DBGrid:

DataSource – DataSource1. Сохраните проект и назовите новый модуль Queries

  1. Перейдите на форму Form1 и добавьте кнопку, установите для нее свойство Caption - Queries

  2. Используя команду File/Use Unit введите в модуль Queries оператор uses ViewTab; а в модуль ViewTab оператор uses Queries;

  3. Кнопка Queries на главной форме (Form1) должна обеспечивать переход на форму «Запросы» (Form2). Поэтому для этой кнопки создайте обработчик события OnClick и включите в него оператор Form2.ShowModal;

  4. Кнопка Exit, созданная в п.1), должна обеспечивать закрытие формы «Запросы» и переход на главную форму. Поэтому создайте для этой кнопки обработчик события OnClick и включите в него оператор Close;

  5. Проверьте переходы между формами. Сохраните проект.

III. Разработка программного кода и организация интерфейса для работы с запросами.

  1. Создайте в модуле ViewTab две глобальные переменные dbn, tn типа string, определяющие путь к каталогу БД и имя файла таблицы; описание этих переменных поместите в разделе interface после оператора var Form1: TForm1; Для присвоения начальных значений этим переменным создайте обработчик события FormCreate для главной формы и включите в него операторы dbn:='I:\...\Books\'; tn:='CatalogBooks.db'; Внесите изменения в обработчик события FormActivate, заменив строковые значения в правых частях на имена соответствующих переменных.

  2. Для заполнения списка запросов при создании соответствующей формы (Form2), создайте обработчик события FormCreate для этой формы и включите в него операторы вида ComboBox1.Items.Add(‘Книги Драйзера’); Количество этих операторов и значения строковых констант в скобках (названия запросов) определяются количеством и содержанием создаваемых запросов (см. пп.1-25 текста задания). Для того, чтобы указать, к какой БД будет обращаться запрос Query1, включите в обработчик события FormCreate оператор Query1.DatabaseName:=dbn;

  3. Создайте обработчик события OnClick для компонента ComboBox1. При выполнении этой процедуры пользователь выбирает из списка имя одного из запросов, в результате чего текст этого запроса должен загрузиться в редактор Memo1. Опишите в этой процедуре переменные n0 типа integer и Fname, Path типа string. Переменные Fname, Path будут определять имя файла с текстом запроса и полный путь к этому файлу соответственно. Переменная n0 будет определять номер выбранного пункта в списке ComboBox1, поэтому в начале выполняемой части процедуры должен быть оператор n0:= ComboBox1.ItemIndex; Далее должны идти условные операторы определяющие выбор одного из файлов с текстами сохраненных вами запросов в зависимости от значения n0; эти операторы имеют вид: if n0=0 then Fname:='BksDr.sql'; Число этих операторов должно соответствовать числу пунктов в списке ComboBox1. Далее, в конце процедуры должны быть следующие операторы Path:=dbn+Fname; Memo1.Lines.Clear; Memo1.Lines.LoadFromFile(Path); Первый из этих операторов определяет полный путь к файлу с текстом запроса, второй очищает поле компонента Memo1, третий загружает в него текст запроса из этого файла.

  4. Создайте обработчики события OnClick для кнопок OpenQuery, CloseQuery и напишите для них программный код. В первом из них должна быть предусмотрена предварительная проверка наличия текста в поле Memo1, а в случае отсутствия текста должно выдаваться сообщение на экран «Текст запроса отсутствует», после чего предусмотреть завершение данной процедуры. Свойству Query1.SQL должно быть присвоено значение, содержащееся в компоненте Memo1 и должен быть выполнен запуск запроса на выполнение с помощью одного из операторов Query1.Open; или Query1.Active:=True; Второй из этих обработчиков должен закрывать запрос с помощью одного из операторов Query1.Close; или Query1.Active:=False;

  5. Сохраните проект. Скомпилируйте проект и исправьте обнаруженные ошибки. После исправления ошибок выполните приложение. Используя разработанный интерфейс, выберите из списка поочередно каждый из запросов, запустите на выполнение и просмотрите результаты.

Задание 23. Создание многотабличных запросов на выборку данных.

В настоящем задании предлагается создать базу данных «Поставки» в формате Paradox 7, разработать запросы на выборку к базе данных и приложение для работы с запросами.

Таблицы базы данных должны иметь следующую структуру:

1. Post (Поставщики)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код поставщика

CodeP

Short

*

Название поставщика

NameP

Alpha

50

2. Grps (Группы товаров)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код группы

CodeGr

Short

*

Имя группы

NameGr

Alpha

50

3. TypeTovs (Типы товаров)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код типа

CodeType

Short

*

Имя типа

NameType

Alpha

50

4. Tov (Товары)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код товара

CodeТ

Short

*

Код группы

CodeGr

Short

Код типа

CodeType

Short

Модель

Model

Alpha

30

Отпускная цена

OtpCena

Money

5. Cln (клиенты)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код клиента

CodeCl

Short

*

Фамилия

FamCl

Alpha

50

Имя

NameCl

Alpha

50

Отчество

ОtchCl

Alpha

50

Адрес

Adres

Alpha

50

6. Sotr (Сотрудники)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код сотрудника

CodeS

Short

*

Фамилия

FamS

Alpha

50

Имя

NameS

Alpha

50

Отчество

ОtchS

Alpha

50

Год рождения

YearBirth

Short

Должность

Dolgn

Alpha

50

7. Zak (Заказы)

Назначение поля

Имя поля

Тип данных

Размер поля

Ключ

Код заказа

CodeZ

Short

*

Код товара

CodeТ

Short

Код поставщика

CodeP

Short

Код клиента

CodeCl

Short

Код сотрудника

CodeS

Short

Торговая надбавка(%)

TorgN

Number

Стоимость доставки

StDost

Money

Срок доставки(дней)

SrDost

Short

Срок гарантии (лет)

SrGar

Number

Количество изделий

Qty

Short

Дата заказа

DateZ

Date

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

  1. Вывести список фирм-поставщиков, поставляющих факсы.

  2. Вывести список моделей товаров, имеющихся не менее чем в 2 заказах.

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

  4. Вывести список заказов, включающий заказы на ксероксы, для которых количество изделий в каждом заказе составляет от 20 до 40 включительно и заказы на факсы, для которых срок гарантии составляет не менее 2 лет. В результаты запроса включить те же поля, что и в п.3. Решить задачу двумя способами: а) объединить необходимые условия отбора в предложении WHERE; б) создать два простых запроса и объединить их оператором UNION.

  5. Вывести все данные о клиентах, сделавших заказы в 2006 году.

  6. Вывести все данные о клиентах, сделавших заказы как в 2006 году, так и в 2007 году.

  7. Вывести все данные о заказах, сделанных одним и тем же клиентом у различных поставщиков.

  8. Вывести суммарный объем заказов по каждой группе товаров, для которых оптовая цена находится в диапазоне значений от 10000 р. до 30000 р.

  9. Вывести суммарный объем заказов по каждому типу и группе товаров (Ксерокс Персональный и т. д.) при условии, что срок гарантии не менее 1,5 года.

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

  11. Вывести суммарный объем заказов по каждому типу товаров при условии, что заказано не менее 10 изделий данного типа.

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

  13. Вывести список поставщиков, имеющих заказы со сроком гарантии не менее 1.5 года. В результатах запроса отобразить название фирмы- поставщика и среднюю для данного поставщика стоимость заказов AvgCost, удовлетворяющих указанному условию.

  14. Вывести список товаров (ксероксов и факсов) класса не ниже 400, но ниже 500, т.е. у которых в наименовании модели товара стоит число не меньше 400, но меньше 500. В список включить модель товара и среднюю стоимость одного изделия AvgCost1 каждой модели по всем заказам, в которые она входит.

  15. Вывести список клиентов, имеющих заказы, отличающиеся по стоимости не менее чем на 100000 р.

Методические указания: