Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_РиЭУБД.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
4.09 Mб
Скачать

Практическая часть

Задание 5.1. Разработка приложения БД «Колледж-3»

Ход работы

  1. Создайте в своей папке с названием «РиЭУБД» папку «ЛР_5», а в ней папку «5.1».

  2. Скопируйте базу данных College.db, созданную Вами в задании 2.1 Лабораторной работы 2.

  3. Напишите следующий обработчик события активизации формы (процедура FormActivate, после кода приведено объяснение выполненных действий):

//активизация формы

procedure TForm1.FormActivate(Sender: TObject);

begin

with Session do

begin

ConfigMode:=cmSession;

try

{

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

}

AddStandardAlias('College',ExtractFilePath(ParamStr(0)),'PARADOX');

Table1.TableName:='College.db';

Table1.Active:=true; //откроем базу данных

finally

ConfigMode:=cmAll;

end;

end;

end;

В рассмотренном примере база данных находится в том же каталоге, что и выполняемый файл программы. Создает псевдоним процедура TForm1.FormActivate. Непосредственное создание псевдонима выполняет процедура AddStandardAlias, которой в качестве параметра передается имя псевдонима и соответствующее ему имя каталога. Так как во время разработки программы нельзя знать, в каком каталоге будет размещена программа работы с базой данных, и, следовательно, имя каталога определяется во время работы программы путем обращения к функциям ParamStr(0) и ExtractFilePath. Значение первой – полное имя выполняемого файла программы, второй – путь к этому файлу. Таким образом, процедуре AddStandardAlias передается полное имя каталога базы данных.

  1. Запустите приложение на выполнение, проверьте его работоспособность.

  2. Сохраните проект. Exe-файл сохраните под именем «Динамический псевдоним».

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

Лабораторная работа №6 Создание запросов с использованием компонента tQuery

Цель работы:

- научиться создавать запросы на выборку информации из базы данных с использованием компонента TQuery;

Теоретическая часть

Изучите теоретический материал, загрузив из папки «Учебная» файл «TQuery.pps».

Практическая часть

Задание 6.1. Разработка приложения БД «Оценки»

Ход работы

  1. Создайте в своей папке папку «ЛР_6», а в ней папку «6.1».

  2. С помощью утилиты BDE Administrator создайте псевдоним с именем Ocenki

  3. С помощью утилиты Database Desktop задайте следующую структуру таблицы:

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

Тип поля

Размер

±(Autoincremental)

  • (ключевое поле)

Familia

A

10

Imja

A

10

Otchestvo

A

15

Year

A

4

Group

A

6

Matematica

S

Informatica

S

History

S

Physics

S

Literature

S

Summa

S

Srednee

# (BSD)

1

  1. Закройте утилиту Database Desktop и запустите программу Delphi 7.

  2. Разместите на форме компоненты:

  • Table (вкладка BDE);

  • DataSource (вкладка Data Access):

  • DBGrid (вкладка Data Controls);

  • DBNavigator (вкладка Data Controls);

  • Query (вкладка BDE);

  • Button – 1 экземпляр;

  • BitBtn – 1 экземпляр;

  • XP Manifest (вкладка Win32).

  1. Установите свойства компонента согласно Таблице 6.2.

Таблица 6.2 Свойства компонентов приложения Оценки

Компонент

Свойство

Значение

Form1

Caption

Оценки

Color

По своему желанию

BorderIcons

biSystemMenu

False

Table1

DatabaseName

Ocenki

TableName

Ocenki.db

Active

True

DataSource1

DataSet

Table1

DBNavigator1

DataSource

DataSource1

Button1

Caption

Запрос по группе

Font

По своему усмотрению

DBGrid1

DataSource

DataSource

Font

По своему усмотрению

BitBtn1

Kind

bkClose

  1. Напишите следующий обработчик события активизации или создания формы (процедура FormActivate или FormCreate):

//создание формы

procedure TForm1.FormCreate(Sender: TObject);

begin

DBGrid1.Columns[0].Title.caption:='№';

DBGrid1.Columns[1].Title.caption:='Фамилия';

DBGrid1.Columns[2].Title.caption:='Имя';

DBGrid1.Columns[3].Title.caption:='Отчество';

DBGrid1.Columns[4].Title.caption:='Год рождения';

DBGrid1.Columns[5].Title.caption:='Группа';

DBGrid1.Columns[6].Title.caption:='Математика';

DBGrid1.Columns[7].Title.caption:='Информатика';

DBGrid1.Columns[8].Title.caption:='История';

DBGrid1.Columns[9].Title.caption:='Физика';

DBGrid1.Columns[10].Title.caption:='Литература';

DBGrid1.Columns[11].Title.caption:='Сумма';

DBGrid1.Columns[12].Title.caption:='Средний балл';

end;

  1. Подсчет суммы и среднего баллы произведем при нажатии клавиши Enter после ввода балла по литературе. Для этого для компонента DBGrid выберите событие OnKeyPress (на вкладке Events) и напишите следующий обработчик события:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

var sum,mat,lit,inf,ph,hist:integer;

sr:real;

begin

if key=#13 then begin //если нажали клавишу Enter, то

//получить из введенных данных балл по математике

mat:=StrToInt(DBGrid1.Fields[6].Text);

//получить из введенных данных балл по математике

inf:=StrToInt(DBGrid1.Fields[7].Text);

//получить из введенных данных балл по информатике

hist:=StrToInt(DBGrid1.Fields[8].Text);

//получить из введенных данных балл по истории

ph:=StrToInt(DBGrid1.Fields[9].Text);

//получить из введенных данных балл по физике

lit:=StrToInt(DBGrid1.Fields[10].Text);

//получить из введенных данных балл по литературе

sum:=mat+hist+inf+lit+ph; //подсчитаем сумму баллов

DBGrid1.Fields[11].Text:=IntToStr(sum); //отобразим результат суммы

sr:=sum/5; //подсчитать средний балл

DBGrid1.Fields[12].Text:=FloatToStr(sr); //отобразить результат

end;

end;

  1. Запустите приложение на выполнение. Заполните таблицу 10-15 записями

  2. Для запроса по номеру группы необходимо написать обработчик события OnClick для кнопки «Запрос по группе»:

procedure TForm1.Button1Click(Sender: TObject);

var group: string[3];

begin

group:=InputBox('Выборка информации из БД','Введите номер группы и нажмите ОК','');

if group<>'' //если пользователь ввел номер группы, то

then begin

with form1.Query1 do begin

close; //закрыть результат выполнения предыдущего запроса

SQL.Clear; //удалим текст предыдущего запроса

//занесем новый запрос в свойство SQL

//выберем записи из таблицы, указав имена определенных полей

SQL.Add('SELECT Familia, Imja, Otchestvo, Grup');

//укажем имя таблицы, из которой нужно сделать выборку

SQL.Add('FROM ":Ocenki:Ocenki.db" ');

SQL.Add('WHERE');

//критерий выбора – значение поля grup должно равняться запросу

SQL.Add('(Grup= "'+group+'") ');

//условие, в соответствии с которым будут упорядочены записи,

//удовлетворяющие критерию запроса

SQL.Add('ORDER BY Familia, Imja, Grup');

Open; //активизируем выполнение запроса

end;

if Query1.RecordCount<>0 then //если записи найдены

//покажем результат выполнения запроса

DataSource1.DataSet:=query1 //источник данных - запрос

else begin

showmessage('В БД нет записей, удовлетворяющих критерию запроса');

DataSource1.DataSet:=table1; //источник данных - таблица

end;

end;

end;

Рассмотрим краткое выполнение запроса. Процедура TForm1.Button1Click запускается щелчком по кнопке «запрос по группе». Она принимает от пользователя строку (номер группы) и записью (добавлением) строк в свойство SQL формирует текст запроса. Затем эта процедура вызовом метода Open активизирует выполнение запроса.

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

  1. Добавьте в приложение кнопку «Все записи», для которой напишите следующий обработчик события OnClick:

procedure TForm1.Button2Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1; //источник данных - таблица

end;

  1. Проверьте работоспособность созданного приложения.

  2. Добавьте в приложение еще несколько запросов (например, по фамилии, оценкам или сумме баллов и т.п.).

  3. Запустите приложение на выполнение, проверьте его работоспособность.

  4. Сохраните проект. Exe-файл сохраните под именем «Запрос оценок».

Задания по вариантам

1. Составьте приложение БД, обрабатывающее базу данных «Записная книжка», в которой хранится следующая информация: ФИО, год рождения, домашний адрес, телефон. Составить SQL-запросы по году рождения и фамилии. Использовать динамический псевдоним.

Подсказка. Для использования динамического псевдонима достаточно очистить свойства DatabaseName и TableName у компонента Table и написать код, аналогичный коду из ЛР 5, а действия по русификации таблицы перенести из события OnCreate в событие OnActivate после открытия таблицы.

2. Составьте приложение БД, обрабатывающее базу данных «Магазин», в которой хранится следующая информация: название страны, столица, площадь территории, численность населения, валюта. Составить фильтр по названию столицы, по численности населения.