МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
Кафедра АСУ
Звіт
до лабораторної роботи №9
з курсу “Об'єктно орієнтоване програмування”
Варіант 8
Львів 2010Тема: Створення ужитку з використанням бази даних
Мета роботи: навчитись створювати таблиці бази даних за допомогою утиліти Database Desktop, зрозуміти способи доступу до таблиць та особливості роботи з ними у системі програмування Delphi.
Порядок роботи:
Створити проект для виконання індивідуального завдання.
Оформити звіт для захисту лабораторної роботи за зразком
назва роботи
мета роботи
порядок роботи
короткі теоретичні відомості
алгоритм розв’язку задачі
тексти відповідних модулів проекту
аналіз отриманих результатів та висновки
Завдання
Створити таблицю бази даних на задану тему та програму для роботи з нею, яка виконує такі задачі:
Перегляд та редагування записів у таблиці, додавання та вилучення.
Впорядковування записів за первинним індексом (ключем).
Впорядковування записів за вторинним індексом.
Пошук записів (точний та неточний, враховуючи та не враховуючи регістр символів).
Встановлення фільтрів для записів.
Індивідуальне завдання:
FM-радіостанції м. Львова.
Текст програми:
unit FMmain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBTables,DB, Grids, DBGrids, StdCtrls, Buttons, XPMan, ExtCtrls,
DBCtrls, Mask, dbcgrids, TeeProcs, TeEngine, Chart, DbChart, ComCtrls,
jpeg;
type
TForm1 = class(TForm)
DBGrid: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
XPManifest1: TXPManifest;
GroupBox1: TGroupBox;
Edit1: TEdit;
ComboBox1: TComboBox;
Button3: TButton;
CheckBox1: TCheckBox;
Button4: TButton;
Label1: TLabel;
Edit2: TEdit;
Edit3: TEdit;
CheckBox2: TCheckBox;
Label2: TLabel;
Label3: TLabel;
ComboBox2: TComboBox;
GroupBox2: TGroupBox;
Edit4: TEdit;
ComboBox3: TComboBox;
Button7: TButton;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
ComboBox4: TComboBox;
Label4: TLabel;
TabControl1: TTabControl;
Image1: TImage;
DBNavigator1: TDBNavigator;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure TabControl1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
S:TStrings;
i:integer;
begin
TabControl1Change(Sender);
Table1.TableName:='C:\FMBase.dbf';
Table1.Close;
Table1.Open;
for i:=0 to Table1.FieldCount-1 do
begin
//Читаэмо і заносимо в СomboBox-и всі поля таблиці
ComboBox1.Items.Add(Table1.Fields.Fields[i].DisplayName);
ComboBox2.Items.Add(Table1.Fields.Fields[i].DisplayName);
ComboBox3.Items.Add(Table1.Fields.Fields[i].DisplayName);
ComboBox4.Items.Add(Table1.Fields.Fields[i].DisplayName);
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
//Переключення контролу в режим Доступний/Недоступний відповідно до CheckBox-у
if Length(ComboBox1.Text)>0 then Button3.Enabled:=true
else Button3.Enabled:=False;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
if Length(ComboBox2.Text)>0 then Button3.Enabled:=true
else Button3.Enabled:=False;
end;
//Встановити фільтр
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
// Тільки ті у яких Поле = Edit.Text
if CheckBox1.Checked then
begin
Table1.Filter:=ComboBox1.Text+' = '+Edit1.Text;
Table1.Filtered:=true;
end;
// Тільки ті у яких першалітера в діапазоні від Edit2.Text до Edit3.Test
if CheckBox2.Checked then
begin
with Table1 do
begin
Filtered:=true;
IndexName:=ComboBox2.Text;
SetRangeStart;
KeyExclusive:=true;
FieldByName(ComboBox2.Text).AsString:=Edit2.Text;
if Length(Edit3.Text)>0 then
begin
SetRangeEnd;
FieldByName(ComboBox2.Text).AsString:=Edit3.Text;
end;
ApplyRange;
end;
end;
end;
//Видалити фільтр
procedure TForm1.Button4Click(Sender: TObject);
begin
Table1.Filtered:=false;
Table1.CancelRange;
end;
//Дозволити чи недозволити доступ до СомбоБоксу та Едіту
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
ComboBox1.Enabled:=CheckBox1.Checked;
Edit1.Enabled:=CheckBox1.Checked;
end;
//Дозволити чи недозволити доступ до СомбоБоксу та двох Едітів
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
ComboBox2.Enabled:=CheckBox2.Checked;
Edit2.Enabled:=CheckBox2.Checked;
Edit3.Enabled:=CheckBox2.Checked;
Table1.Filtered:=CheckBox2.Checked;;
end;
//Пошук............
procedure TForm1.Button7Click(Sender: TObject);
var
O:TLocateOptions;
begin
O:=[];
// Ввімкнути частковий збіг
if not CheckBox4.Checked then
O:=O+[loPartialKey];
// Вимкнути чутливість до регістру
if not CheckBox3.Checked then
O:=O+[loCaseInsensitive];
//Якшо незнайдено
if Table1.Locate(ComboBox3.Text,Edit4.Text,O)=false then Application.MessageBox('Запис не знайдено','Помилка',0);
end;
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
Table1.IndexName:=ComboBox4.Text;
end;
procedure TForm1.TabControl1Change(Sender: TObject);
begin
Case TabControl1.TabIndex of
0: begin
GroupBox1.Visible:=true;
GroupBox2.Visible:=false;
end;
1: begin
GroupBox2.Visible:=true;
GroupBox1.Visible:=false;
end;
end;
end;
end.
Скріншоти роботи програми
Висновок: На даній лабораторній роботі я навчився створювати таблиці бази даних за допомогою утиліти Database Desktop, зрозумів способи доступу до таблиць та особливості роботи з ними у системі програмування Delphi.