
- •Содержание
- •Введение
- •Переход к реляционной модели
- •Реляционная модель
- •Описание процесса реализации базы данных
- •Создание таблиц базы данных с помощью DataBase Desktop.
- •Созданные таблицы:
- •Определение ссылочной целостности между таблицами.
- •Создание приложения для работы с базой данных в среде Delphi.
- •Компоненты отображение данных
- •Создание отчётов
- •Запросы
- •Список используемой литературы
Компоненты отображение данных
Компонент TDBGrid обеспечивает табличный способ отображения на экране строк данных из компонентов TTable или TQuery. Приложение может использовать TDBGrid для отображения, вставки, уничтожение, редактирования данных БД. Обычно DBGrid используется в сочетании с DBNavigator, хотя можно использовать и другие интерфейсные элементы, включив в их обработчики событий методы, такие как Last и Next, которые я также использую для изменения фона формы. Для связывания компонента TDBGrid с DataSource нужно указать имя конкретного набора DataSource в свойстве DataSource компонента TDBGrid.
Создание отчётов
Генерация выходной документации осуществляется в Delphi с помощью компонентов с закладки QReport. На компонент TQuickRep помещаю ColumnHeaderBand и DetailBand, которые предоставляют собой области отображения информации в отчете. В эти области ставятся компоненты QRLabel и QRDBText. Для компонентов настраиваю шрифт, цвет. В QRDBText указывать DataSet и DataField. Для просмотра отчёта из приложения применяется процедура quickrep1.preview, помещённая в обработчик нажатие кнопки.
Запросы
Выводит всю информацию из таблицы актер:
Select *
From актер;
Находит актеров, рост которых лежит в пределе (180-185) и располагает в порядке возрастания:
Select ФИ, Дата_рождения, Рост
From актер
Where (Рост between '180' and '185')
Order BY
Рост ASC
Находит всех актеров, имена которых начинаются на «Б»:
Select ФИ
From актер
Where ФИ
LIKE 'Б%'
Выводит агентов, работающих на актеров:
Select актер.ФИ, агент.ФИ
From актер
INNER JOIN агент ON актер.ФИ_агента =агент.ФИ
Выводит названия фестивалей, успешных для актеров:
Select Название, итог
From награда_номинация
Where Итог=’True’
Запрос с параметром: Можно найти актеров по имени.
Добавляет в таблицу агент атрибут Рост
ALTER TABLE агент ADD Рост Varchar(3);
8) Удаляет из таблицы агент атрибут Рост
ALTER TABLE агент DROP Рост;
Внешний вид созданных в приложении форм.
Внешний вид формы «Главная»
Внешний вид формы «Просмотр»
Внешний «М:М»
Внешний вид формы «добавление»
Внешний вид формы «Запросы»
Внешний вид формы «Диаграмма»
Внешний вид формы «Отчёт»
Для работы с базой данных созданы кнопки по нажатию на которые вызывают формы содержащие инструменты для работы с базой данных.
Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, jpeg, ExtCtrls, DB, DBTables;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
cgvb1: TMenuItem;
bn2: TMenuItem;
bnm1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Image1: TImage;
Image2: TImage;
N5: TMenuItem;
MM1: TMenuItem;
procedure bn2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure bnm1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure MM1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2,unit3,unit4,unit5,unit6,unit7;
{$R *.dfm}
procedure TForm1.bn2Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
form3.QuickRep1.Preview;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
MessageDlg('База данных "Иностранных актеров". Выполнил Белик В.И. ФИТ 3-2а',
mtConfirmation, [mbYES], 0);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
form4.Show;
end;
procedure TForm1.bnm1Click(Sender: TObject);
begin
form5.Show;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
form6.show;
end;
procedure TForm1.MM1Click(Sender: TObject);
begin
form7.Show
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables, ExtCtrls, DBCtrls, StdCtrls,
ExtDlgs, ADODB;
type
TForm2 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DataSource1: TDataSource;
Table1: TTable;
Button1: TButton;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
Table2: TTable;
DBGrid3: TDBGrid;
DataSource3: TDataSource;
Table3: TTable;
DBNavigator2: TDBNavigator;
DBGrid4: TDBGrid;
DBNavigator3: TDBNavigator;
Table4: TTable;
DataSource4: TDataSource;
DataSource5: TDataSource;
DBGrid5: TDBGrid;
Table5: TTable;
Table6: TTable;
DBNavigator4: TDBNavigator;
DBNavigator5: TDBNavigator;
DBGrid6: TDBGrid;
DataSource6: TDataSource;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls;
type
TForm3 = class(TForm)
QuickRep1: TQuickRep;
DetailBand1: TQRBand;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBImage1: TQRDBImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses unit2;
{$R *.dfm}
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DbChart, DB,
DBTables, TeeFunci, StdCtrls;
type
TForm4 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBChart1: TDBChart;
TeeFunction1: TAddTeeFunction;
Series1: THorizBarSeries;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
Form4.Hide;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls;
type
TForm5 = class(TForm)
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Table1: TTable;
Bevel2: TBevel;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
Table2: TTable;
Label9: TLabel;
Edit8: TEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Button2: TButton;
Bevel3: TBevel;
DBGrid3: TDBGrid;
DBNavigator3: TDBNavigator;
Edit13: TEdit;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
DataSource3: TDataSource;
Table3: TTable;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
Table1.Insert;
Table1.FieldByName('ID').AsString:=Edit1.Text;
Table1.FieldByName('ФИ').AsString:=Edit2.Text;
Table1.FieldByName('Рост').AsString:=Edit3.Text;
Table1.FieldByName('Дата_рождения').AsString:=Edit4.Text;
Table1.FieldByName('Пол').AsString:=Edit5.Text;
Table1.FieldByName('ФИ_агента').AsString:=Edit6.Text;
Table1.FieldByName('Годовой_доход').AsString:=Edit7.Text;
Table1.Post;
Table1.Refresh;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
Table2.Insert;
Table2.FieldByName('ФИ').AsString:=Edit8.Text;
Table2.FieldByName('Дата_рождения').AsString:=Edit9.Text;
Table2.FieldByName('Адрес').AsString:=Edit10.Text;
Table2.FieldByName('Телефон').AsString:=Edit11.Text;
Table2.FieldByName('Годовой_доход').AsString:=Edit12.Text;
Table2.Post;
Table2.Refresh;
end;
procedure TForm5.Button3Click(Sender: TObject);
begin
Table3.Insert;
Table3.FieldByName('Название').AsString:=Edit13.Text;
Table3.FieldByName('ID_актера').AsString:=Edit14.Text;
Table3.FieldByName('Год_выпуска').AsString:=Edit15.Text;
Table3.FieldByName('Длительность').AsString:=Edit16.Text;
Table3.FieldByName('Цвет').AsString:=Edit17.Text;
Table3.Post;
Table3.Refresh;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids;
type
TForm6 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Query1: TQuery;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
begin
Query1.SQL.Text := Memo1.Text;
Query1.Open
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
if RadioButton1.Checked=true then begin
Form6.Query1.Close;
Form6.Query1.SQL.Clear;
Form6.Query1.SQL.Add('Select * From актер where актер."ФИ"=:Name1;');
Form6.Query1.Close;
Form6.Query1.Prepare;
Form6.Query1.Params[0].AsString :=Edit1.Text;
Form6.Query1.Open;
if (Form6.Query1.RecordCount <> 0)then ShowMessage('Актер найден') else ShowMessage('Актер не найден');
end
end;
procedure TForm6.Button3Click(Sender: TObject);
begin
Form6.Hide;
end;
procedure TForm6.Button4Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('Select *');
Memo1.Lines.Append('From актер');
Button1Click(Self);
end;
procedure TForm6.Button7Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('Select актер.ФИ, агент.ФИ');
Memo1.Lines.Append('From актер INNER JOIN агент ON актер.ФИ_агента =агент.ФИ');
Button1Click(Self);
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids;
type
TForm7 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
DataSource3: TDataSource;
DBGrid3: TDBGrid;
DBNavigator3: TDBNavigator;
DataSource4: TDataSource;
DBGrid4: TDBGrid;
DBNavigator4: TDBNavigator;
Table1: TTable;
Table2: TTable;
Table3: TTable;
Table4: TTable;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
end.