Запросы на выборку с параметром




Лабораторная работа по курсу Базы данных.

SQL – запросы в DELPHI – среде с ADO – доступом к БД.

Время выполнения – 2 часа.

Исходные данные: База данных Магазин.mdb. Отлаженное приложение, выполненное в рамках лабораторной работы «Пользовательский интерфейс для заполнения таблицы, содержащей данные других таблиц».

Задание

Создайте Delphi - приложение, которое выполняет SQL- запросы к таблицам продаж SALES, товаров TOVAR и фирм FIRM с использованием ADO – доступа. Новая форма выполнения запросов должна иметь вид, представленный на Рис.1

Рис.1

 

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

 

1. Откройте Delphi – проект, созданный во время выполнения лабораторной работы «Пользовательский интерфейс для заполнения таблицы, содержащей данные других таблиц». Предварительно создайте копию папки, в которой он находится. Проект содержит четыре модуля Unit1, Unit2, Unit3, Unit4 и три формы Form1, Form3, Form4 с интерфейсными объектами.

2. Создайте новую форму для запросов – Form5: File/New/Form и установите ее свойство Caption равным «SQL – запросы с ADO – доступом к БД». Сохраните файлы этой формы и обновленный файл проекта.

3. Перейдите на главную форму Form3, войдите в редактор объекта MainMenu1 и включите в меню новую опцию SQL - ЗАПРОСЫ.

4. Подключите к модулю главной формы модуль формы запросов: File/Use Unit/ Unit5.

5. Для главной формы Form3 cоздайте событийную процедуру для события нажатия нового пункта меню SQL - ЗАПРОСЫ.

procedure TForm3.N6Click(Sender: TObject);

begin

// открыть форму SQL - запросов

Form5.ShowModal;

end;

6. Сохраните и запустите приложение.

 

 

Разработка интерфейса формы выполнения SQL – запросов.

7. Установите на форму Form5 интерфейсные объекты (Рис.1) и объекты доступа к БД из разделов ADO, Data Access, Standard и DataControls палитры компонентов, изображенные на рисунке 2.

Рис.2

8. Подключите к модулю формы Form5 модуль данных DM: File/Use Unit/ Unit2

9. Последовательно в инспекторе объектов установите следующие свойства для объектов доступа SQL - запросов:

Объект Свойство Значение
ADOQuery1 Connection ADOConnection1
  Parameters R
DataSource1 DataSet ADOQuery1

10. Используя педаль поля Parameters, войдите в редактор параметров Editing Parameters и добавьте параметр R.

 

11. Установите у интерфейсных объектов следующие свойства:

 

Объект Свойство Значение
Panel1 Align AlTop
  Caption пусто
Panel2 Align AlClient
  Caption пусто
DBGrid1 DataSource DataSource1
Edit1 Text пусто
  Font 10, жирный
Edit2 Text пусто
  Font 10, жирный
Button1 Caption Скоропортящиеся товары
Button2 Caption Товары со сроком годности <=
Button3 Caption Фрагмент названия для поиска товара
Button4 Caption Итог по всем продажам
Button5 Caption Итоги по каждому товару

12. Сохраните и запустите приложение.

 

 

Создание SQL – запросов. Запрос на выборку.

 

13. Создайте событийную процедуру выполнения SQL – запроса, соответствующую нажатию на кнопку Button1 - Скоропортящиеся товары:

 

procedure TForm5.Button1Click(Sender: TObject);

Begin

With ADOQuery1 Do Begin

Close;

SQL.Clear;

SQL.Add (' SELECT Tovar_Name, Storage_Life FROM Tovar');

SQL.Add (' WHERE Flag = True ORDER BY Tovar_Name');

Open;

End;

DBGrid1.Columns[0].Title.Caption:= 'Товар';

DBGrid1.Columns[1].Title.Caption:= 'Срок годности';

end;

14. Испытайте запрос и сохраните приложение.

 

Запросы на выборку с параметром

15. Создайте событийную процедуру выполнения SQL – запроса, соответствующую нажатию на кнопку Button2 – Т овары со сроком годности <=. Запрос содержит параметр R, значение которого выбирается из поля Edit1:

 

procedure TForm5.Button2Click(Sender: TObject);

begin

With ADOQuery1 Do Begin

Close;

SQL.Clear;

SQL.Add ('SELECT Tovar_Name,Storage_Life FROM Tovar');

SQL.Add (' WHERE Storage_Life <=:R ORDER BY Tovar_Name');

Parameters[0].Value:= Edit1.Text;

Open;

End;

DBGrid1.Columns[0].Title.Caption:= 'Товар';

DBGrid1.Columns[1].Title.Caption:= 'Срок годности';

end;

16. Испытайте запрос и сохраните приложение.

17. Создайте событийную процедуру выполнения SQL – запроса, соответствующую нажатию на кнопку Button3 – П оиск товара по названию. Запрос содержит параметр R, значение которого выбирается из поля Edit2:

procedure TForm5.Button3Click(Sender: TObject);

begin

With ADOQuery1 Do Begin

Close;

SQL.Clear;

SQL.Add ('SELECT Tovar_Name,Storage_Life, Flag FROM Tovar ');

SQL.Add (' WHERE Tovar_Name Like:R ORDER BY Tovar_Name ');

Parameters[0].Value:= '%'+Edit2.Text+'%';

// '%' означает любой текст

Open;

End;

DBGrid1.Columns[0].Title.Caption:= 'Товар';

DBGrid1.Columns[1].Title.Caption:= 'Срок годности';

end;

18. Испытайте запрос и сохраните приложение.

 

Групповой запрос.

19. Создайте событийную процедуру выполнения группового SQL – запроса суммирования денег по всем продажам, соответствующую нажатию на кнопку Button4 – Итог по всем продажам:

procedure TForm5.Button4Click(Sender: TObject);

begin

With ADOQuery1 Do Begin

Close;

SQL.Clear;

SQL.Add ('SELECT Sum (Price * Quantity) FROM Sales ');

Open;

End;

DBGrid1.Columns[0].Title.Caption:= 'ИТОГО';

end;

20. Испытайте запрос и сохраните приложение.

 

Запрос на выборку по двум таблицам с группировкой.

21. Создайте событийную процедуру выполнения SQL – запроса, соответствующую нажатию на кнопку Button5 – Итоги по каждому товару. Этот запрос строится на основе объединения (INNER JOIN) двух таблиц БД – Tovar и Sales. Данные сортируются(ORDER BY) и группируются(GROUP BY) по названиям товаров. Стоимости товаров с общим названием суммируются (Sum).

procedure TForm5.Button5Click(Sender: TObject);

begin

With ADOQuery1 Do Begin

Close;

SQL.Clear;

SQL.Add(' SELECT Tovar.Tovar_Name, Sum (Sales.Quantity * Sales.Price)');

SQL.Add(' FROM Tovar INNER JOIN Sales ON Tovar.Tovar_ID = Sales.Tovar_ID');

SQL.Add('GROUP BY Tovar.Tovar_Name ORDER BY Tovar.Tovar_Name');

Open;

End;

DBGrid1.Columns[0].Title.Caption:= 'Товар';

DBGrid1.Columns[1].Title.Caption:= 'СУММА Итого';

end;

22. Испытайте запрос и сохраните приложение.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: