- •Задания и методические указания к выполнению лабораторных работ
- •Содержание
- •Лабораторная работа №1 Создание приложения по технологии bde на основе заимствованных таблиц
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №2 Разработка приложений с использованием технологии bde на основе создания собственных таблиц
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №3 Использование мастера конструирования форм
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №4 Отбор записей в таблице базы данных
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №5 Динамически создаваемые псевдонимы
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №6 Создание запросов с использованием компонента tQuery
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №7 Работа с одной таблицей. Создание подключения к базе данных
- •Лабораторная работа №8 Связь таблиц
- •Лабораторная работа №9 Метод GetTableNames
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №10 Сортировка записей
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №11 Компонент tadoQuery и его свойства
- •Теоретическая часть
- •Практическая часть
- •1. Свойство sql
- •2. Свойство Parameters
- •Лабораторная работа №12 Фильтрация записей
- •Теоретическая часть
- •Практическая часть
- •Задание для самостоятельного выполнения
- •Лабораторная работа №13 Создание отчетов
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №14 Управление транзакциями в sql Server
- •Лабораторная работа №15 Использование доменов и хранимых процедур
- •Список рекомендуемой литературы
Практическая часть
Задание 5.1. Разработка приложения БД «Колледж-3»
Ход работы
Создайте в своей папке с названием «РиЭУБД» папку «ЛР_5», а в ней папку «5.1».
Скопируйте базу данных College.db, созданную Вами в задании 2.1 Лабораторной работы 2.
Напишите следующий обработчик события активизации формы (процедура 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 передается полное имя каталога базы данных.
Запустите приложение на выполнение, проверьте его работоспособность.
Сохраните проект. Exe-файл сохраните под именем «Динамический псевдоним».
В следующих лабораторных работах для закрепления навыков старайтесь использовать динамические псевдонимы!
Лабораторная работа №6 Создание запросов с использованием компонента tQuery
Цель работы:
- научиться создавать запросы на выборку информации из базы данных с использованием компонента TQuery;
Теоретическая часть
Изучите теоретический материал, загрузив из папки «Учебная» файл «TQuery.pps».
Практическая часть
Задание 6.1. Разработка приложения БД «Оценки»
Ход работы
Создайте в своей папке папку «ЛР_6», а в ней папку «6.1».
С помощью утилиты BDE Administrator создайте псевдоним с именем Ocenki
С помощью утилиты 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
Закройте утилиту Database Desktop и запустите программу Delphi 7.
Разместите на форме компоненты:
Table (вкладка BDE);
DataSource (вкладка Data Access):
DBGrid (вкладка Data Controls);
DBNavigator (вкладка Data Controls);
Query (вкладка BDE);
Button – 1 экземпляр;
BitBtn – 1 экземпляр;
XP Manifest (вкладка Win32).
Установите свойства компонента согласно Таблице 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
Напишите следующий обработчик события активизации или создания формы (процедура 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;
Подсчет суммы и среднего баллы произведем при нажатии клавиши 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;
Запустите приложение на выполнение. Заполните таблицу 10-15 записями
Для запроса по номеру группы необходимо написать обработчик события 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, т.к. результат выполнения запроса – это файл данных (таблица), который создается в результате выполнения запроса.
Добавьте в приложение кнопку «Все записи», для которой напишите следующий обработчик события OnClick:
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet:=Table1; //источник данных - таблица
end;
Проверьте работоспособность созданного приложения.
Добавьте в приложение еще несколько запросов (например, по фамилии, оценкам или сумме баллов и т.п.).
Запустите приложение на выполнение, проверьте его работоспособность.
Сохраните проект. Exe-файл сохраните под именем «Запрос оценок».
Задания по вариантам
1. Составьте приложение БД, обрабатывающее базу данных «Записная книжка», в которой хранится следующая информация: ФИО, год рождения, домашний адрес, телефон. Составить SQL-запросы по году рождения и фамилии. Использовать динамический псевдоним.
Подсказка. Для использования динамического псевдонима достаточно очистить свойства DatabaseName и TableName у компонента Table и написать код, аналогичный коду из ЛР 5, а действия по русификации таблицы перенести из события OnCreate в событие OnActivate после открытия таблицы.
2. Составьте приложение БД, обрабатывающее базу данных «Магазин», в которой хранится следующая информация: название страны, столица, площадь территории, численность населения, валюта. Составить фильтр по названию столицы, по численности населения.
