Структура програмного продукту
Структура даного програмного продукту, є наступною:
v Головне вікно програми (fmMain) – на ньому розміщено головне меню з такими пунктами: Перегляд, Редагування, Поставки, Вікно та Про програму.
v Вікно редагування (fmDBForm) – забезпечує редагування записів в базі даних auto.
v Вікно перегляду (fmDBTable) – вікно, в якому відображаються всі дані занесені до таблиць бази даних
v Перегляд зв’язаних таблиць (fmDBMasterDetail) – дає можливість користувачу заносити дані до таблиць що зв’язані зв’язком один-до-багатьох.
v Про програму (fmAbout) – містить відомості про автора.
7.3. Розробка алгоритму
В процесі створення програмного продукту було створено головне вікно програми (fmMain) – на ньому розміщено головне меню, компонент ActionList1 та MainMenu1 з такими пунктами: Перегляд, Редагування, Поставки, Вікно та Про програму.
Форма fmAny – родоначальник усієї ієрархії форм проекту. Розмістимо на формі компоненти Panel1-3 та BitBtn1-2 і встановимо для їх властивостей значення. Panel1: Align -> alTop; Panel2: Align -> alClient; Panel 3: Align -> alBottom, BitBtn: Kind -> bkOk, Anchors -> akRight, BitBtn: Kind -> bkCansel, Anchors -> akRight. В код форми нічого не записуватимемо.
Форму fmAny зберігаємо в репозиторії: Project-> Add to Repository.
fmDBForm – форма, від якої будуть успадковуватись всі форми, які реалізують опрацювання таблиць бази даних в режимі “форма”. Створимо дану форму виконуючи наступне: File -> New -> Other -> Forms -> fmAny, встановимо перемикач Inherited та натиснемо OK. Перейменуємо нову форму в fmDBForm. На формі додамо компонент DataSource1, Navigator1, Label1-2, Button2.
procedure TfmQForm.BitBtn1Click(Sender: TObject);
begin
if Query1.State in [dsEdit, dsInsert] then
Query1.Post;
inherited;
end;
procedure TfmQForm.BitBtn2Click(Sender: TObject);
begin
if Query1.State in [dsEdit, dsInsert] then
Query1.Cancel;
inherited;
end;
procedure TfmQForm.FormCreate(Sender: TObject);
begin
inherited;
Query1.Open;
end;
procedure TfmQForm.FormActivate(Sender: TObject);
begin
inherited;
DataSource1DataChange(Self, Query1.Fields[0]);
end;
procedure TfmQForm.DataSource1DataChange(Sender: TObject; Field: TField);
begin
inherited;
case Query1.State of
dsEdit : Label1.Caption := 'Ðåäàãóâàííÿ';
dsInsert: Label1.Caption := 'Âñòàâêà';
dsBrowse: Label1.Caption := 'Ïåðåãëÿä';
end;
case Query1.State of
dsEdit, dsBrowse:
Label2.Caption := 'Çàïèñ '+IntToStr(Query1.RecNo)
+' ³ç '+IntToStr(Query1.RecordCount);
dsInsert:
Label2.Caption := 'Íîâèé çàïèñ';
end;
Після завершення розробки форми fmDBForm її необхідно зберегти в репозиторії.
Форма fmDBTable – похідна від форми fmDBForm, від неї будуть успадковуватись всі форми, які реалізують опрацювання таблиць бази даних в режимі “таблиця”. Для створення нової форми потрібно виконати команди: File -> New -> Other -> Forms -> fmDBForm. Встановимо перемикач Inherited та натиснемо OK. Перейменуємо нову форму в fmDBTable.
Фрагмент коду для виводу звіту на друк з допомогою програми Excel
procedure TfmDBForm.Button2Click(Sender: TObject);
var
X: Variant;
i, j: integer;
begin
inherited;
// Створення Ole об’єкту Excel.Application ---
X := CreateOLEObject('Excel.Application');
try
// Робимо Ole об’єкт видимим, створюємо нову робочу книгу ---
X.Visible := true;
X.Workbooks.Add;
// ---
// Створення заголовку таблиці ---
for i := 0 to (DataSource1.DataSet).FieldCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[1, 1 + i].Value :=
(DataSource1.DataSet).Fields[i].DisplayLabel;
X.WorkBooks[1].ActiveSheet.Cells[1, 1 + i].Font.Bold := true;
X.WorkBooks[1].ActiveSheet.Cells[1, 1 + i].Interior.ColorIndex := 10;
end;
// ---
// Передача даних з таблиці ---
(DataSource1.DataSet).First;
for i := 0 to (DataSource1.DataSet).RecordCount - 1 do begin
for j := 0 to (DataSource1.DataSet).FieldCount - 1 do begin
X.WorkBooks[1].ActiveSheet.Cells[2 + i,1 + j].Value :=
(DataSource1.DataSet).Fields[j].AsString;
end;
(DataSource1.DataSet).Next;
end;
// Автовирівнювання стовпців ---
for j := 0 to (DataSource1.DataSet).FieldCount - 1 do
X.WorkBooks[1].ActiveSheet.Columns[1+j].EntireColumn.AutoFit;
// ---
// Присвоєння назви листа ---
X.WorkBooks[1].ActiveSheet.Name := (DataSource1.DataSet as TQuery).DatabaseName;
// Збереження робочої книги ---
// X.WorkBooks[1].SaveAs(SaveDialog1.FileName);
finally
{X.Quit;}
Screen.Cursor := crDefault;
end;
end;
fmDBMasterDetail – похідна від форми fmDBForm, вона призначена бути предком форм, які реалізують опрацювання деяких двох зв’язаних таблиць бази даних в режимі „головна-підлегла таблиці”. Для створення нової форми, породженої формою fmDBForm, потрібно виконати команди: File -> New -> Other -> Forms -> fmDBForm. Встановимо перемикач Inherited та натиснемо OK. Перейменуємо нову форму в fmDBMasterDetail.
Розробка програми
Безпосередньо перед тим, як приступити до розробки програми, необхідно створити саму базу даних автозапчастин. Запускаємо програму Database Desktop. Після старту програми вибираємо команду меню File → New → Table для створення нової таблиці. Перед нами з’явилося діалогове вікно Create Table вибору типу таблиці. Вибираємо запропонований нам за замовчуванням формат Paradox 7. Після вибору типу таблиці появиться діалогове вікно, специфічне для кожного формату, в якому нам необхідно задати поля таблиці і їх тип.
Для таблиці Деталі задаємо наступні значення:
Рис. 7.4.1 Таблиця Деталі
Таблиця Поставки
Рис. 7.4.2 Таблиця Поставки
Таблиця Виробники
Рис. 7.4.3 Таблиця Виробники
Таблиця Проекти
Рис. 7.4.4 Таблиця Проекти
В кінцевому результаті ми одержимо структури таблиць збережені до спеціально створеного каталогу бази даних. Після створення таблиць бази даних необхідно створити аліас. Запускаємо програму SQL Explorer і створюємо нову базу даних. Для цього виконаємо команду Object → New, після чого в діалоговому вікні вибору драйвера вказуємо значення STANDART. Після натискування кнопки Ok в списку з’являється новий елемент, помічений зеленим трикутником. Це означає, що реєстрація бази даних не завершена. За замовчуванням формується ім’я бази STANDART1, змінимо його на ім’я auto. Переконаймося, що у властивості DEFAULT DRIVER (Драйвер за замовчуванням) стоїть значення PARADOX. У властивості PATH (Шлях пошуку для каталога, в якому зберігаються таблиці) вказуємо наш робочий каталог.
Тепер зареєстровану в системі BDE базу даних необхідно зберегти. Для цього в контекстному меню об’єкта Постачальники вибираємо пункт Apply (Примінити настройки). На запитання про необхідність збереження змін даємо відповідь Yes. Якщо розкрити об’єкт auto, клацнувши по значку “+” перед його іменем, на правій панелі SQL Explorer будуть показані всі три таблиці створеної нами бази даних, а значок бази помічається зеленою рамкою, що вказує, що база даних auto відкрита. Після вивчення структури базу даних потрібно закрити за допомогою команди Close контекстного меню. Виділення об’єкту буде знято. Тепер можна закрити вікно SQL Explorer і вернутися в середовище Delphi.
Запускаємо програму Database Desktop. За допомогою команди File → Open → Table почергово відкриваємо всі три створені нами таблиці. Отже, у нас уже є створена база даних і аліас, та введені деякі дані. Тепер необхідно створити модуль даних.
Запускаємо програму Borland Delphi. Створюємо новий проект і додаємо до нього модуль даних командою File → New → Data Module. На панелі модуля розміщуємо компоненти, що забезпечать доступ до потрібних нам трьох таблиць бази даних auto. Для цього вибираємо чотири компоненти TТable та чотири компоненти TDataSource.
Налаштовуємо компоненти TTable. Для цього властивості DataBaseName присвоїмо з випадаючого списку псевдонім auto. Після цього властивості TableName присвоїмо ім’я відповідної таблиці бази даних із списку. Для активізації таблиць встановлюємо властивість Active в True.
Налаштовуємо компоненти TDataSource. Для цього властивість DataSet зв’язуємо з відповідною таблицею.
Зберігаємо готовий модуль даних в Object Repository. Для цього клацаємо правою кнопкою миші на модулі даних і вибираємо Add to Repository (Додати до сховища). В полі Title (Назва) набираємо dmPost. В полі Description (Опис) – форма модуля даних для бази даних auto. Вибираємо Data Module із списку Pages і натискаємо Ok. Тепер наш модуль буде зберігатися в репозиторії на вкладинці Data Modules під іменем dmKyrsova і його можна буде викликати з своїх проектів.
Отже, база даних і модуль ми уже створили, тепер переходимо до створення основної програми, з якою буде працювати користувач.
Запускаємо програму Borland Delphi. Створюємо новий проект. За допомогою команди File → New → Other → DataModule → dmauto додаємо до форми проекту створений нами модуль даних (при параметрі Use). В розділі Uses головної форми додаємо назву модуля даних, щоб він став доступним.
Розміщуємо на формі по три компоненти TDBGrid та TDBNavigator, які знаходяться на сторінці Data Controls. За допомогою властивості DataSource налаштовуємо ці компоненти на перегляд таблиць Обладнання, Відділ, Тип обладнання. Для цього необхідно вибрати із випадаючого списку рядок DataModule2.DataSource1, DataModule2.DataSource2, DataModule2.DataSource3, DataModule2.DataSource4. Запускаємо проект на виконання, для перевірки перегляду, введення, редагування та видалення користувачем записів таблиць бази даних.
За конфігурацію набору кнопок навігатора відповідає властивість VisibleButton. Присвоюючи окремим кнопкам значення True чи False ми тим самим додаємо або забираємо їх із стандартного набору.
Щоб змінити англійські назви полів в таблиці в модулі даних нашого проекту виділяємо елемент Table першої таблиці. Натискаємо на ньому правою кнопкою миші і вибираємо команду Fields Editor. У вікні редактора, що відкриється, натискаємо праву кнопку миші і вибираємо команду Add All Fields, після чого всі поля таблиці стануть статичними. Використовуючи інспектор об’єктів присвоюємо властивостям Display Label об’єктів Field українські назви полів. Задаємо властивості Visible значення False для полів, яких ми не хочемо висвітлювати.
Виконаємо вказані операції для всіх таблиць бази даних і переглядаємо їх вміст через відповідне використання елементів відображення.
Обробляємо подію TfmDBTableD.Button1Click для таблиці Деталі, щоб відфільтрувати всі записи таблиці за заданими значеннями Назва Деталі:
procedure TfmDBTableD.Button1Click(Sender: TObject);
begin
inherited;
Table1.Filtered := False;
Table1.Filter := 'DNazva = ''' + Edit1.Text+ '''';
Table1.Filtered := True;
end;
Аналогічним чином виконаємо фільтрування і в інших полях таблиць даних бази даних.
7.5. Інструкція користувачу
Для того щоб розпочати введення або редагування даних потрібно вибрати пункт головного меню Редагувати, яка переведе форму в режим редагування.
Рис. 7.5.1 Таблиця Виробники в режимі редагування
* Щоб додати новий рядок натисніть кнопку " додати запис (+) " ;
* Щоб видалити рядок натисніть кнопку " видалити запис (-) ", а потім підтвердіть або скасуйте видалення ;
* Щоб редагувати записи натисніть кнопку " редагувати записи " або двічі клацніть лівою клавішею миші по потрібному полю ;
* Якщо Ви хочете зберегти зміни натисніть кнопку " зберегти зміни ", якщо ні - "відмінити зміни" ;
* Для обновлення даних натисніть кнопку " обновити " ;
Для користування фільтром необхідно вибрати таблиці в режимі перегляду, пункт Перегляд та вказати пошукове значення у відповідному рядку. Щоб відмінити дію фільтру необхідно натиснути на кнопці Скинути фільтр.
Рис. 7.5.2 Таблиця Виробники в режимі перегляду
В результаті такого вибору будуть доступні поля по яким може проводитися фільтрування.
7.6. Результати тестування
Програма працює в середовищі Windows. Програма протестована на комп’ютері з такою конфігурацією:
Процесор – Intel Pentium M 1,7 ГГц ; ОЗП – 512 Мб ; Жорсткий диск – 80 Гб ; Відеоадаптер – Intel 915 GL ;
Мінімальні системні вимоги данної програми:
Процесор – 400 МГц; ОЗП – 64 Мб ;
Всі функції програми, а саме: пошук, добавлення нових записів в таблицю, редагування записів і їх видалення працюють.
Висновок
Практика підтвердила вміння володіти навиками роботи з комп’ютером, вміння складати програми дала можливість не тільки розв’язувати поставлену задачу, але й показати розуміння, і вміння чітко і лаконічно формулювати свої думки, правильно ставити задачу і знаходити оптимальні шляхи її рішення, швидко орієнтуватися в потоці інформації, звично звертатися до літературних джерел для знаходження оптимального варіанту вирішення задачі.
Для виконання поставленої задачі було створена програма яка виконує поставлену задачу по керуванні базою даних обладнання організації. Вона проста і зручна в експлуатації. Дану програму можна застосовувати в різних магазинах по виготовлення та збуту автозапчастин.
Список використаної літератури
1. Архангельський А. Я. Інтегрованная среда разработки Delphi – М.:ЗАО, Біном; 1999.
2. А. Федоров. Delphi2 для всех. 2-е издание. Компьютер-Пресс, 1997. - 464 с.
3. Нейл Рубенкинг. Программирование в Delphi для “чайников”. - 2-е издание. Диалектика, 1997. - 368 с.
4. Лей Лишнер. Секреты Delphi. Диасофт, 1996. - 600 с.
5. Мазке Кенту для професіоналів Delphi 6: видавництво Пітер, 2002.
6. Том Сван. Секреты 32-разрядного программирования на Delphi. Диалектика, 1997. - 480 с.
7. Довідкова система Delphi 7.0 Help.
Лістинг програми
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdActns, ActnList, ImgList;
type
TfmMain = class(TForm)
MainMenu1: TMainMenu;
Edit1: TMenuItem;
File1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
ActionList1: TActionList;
ImageList1: TImageList;
WindowClose1: TWindowClose;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowArrange1: TWindowArrange;
Cascade1: TMenuItem;
MinimizeAll1: TMenuItem;
ileHorizontally1: TMenuItem;
ileVertically1: TMenuItem;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N16Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmMain: TfmMain;
implementation
uses uDBTableV, uDBTableD, uDBTableP, uDBFormD, uDBFormP, uDBFormV,
uMasterDetailV, uMasterDetailDetali, uDBFormPostavky, uDBTablePostavky,
fmAbout;
{$R *.dfm}
procedure TfmMain.N1Click(Sender: TObject);
begin
fmDBFormV := TfmDBFormV.Create( Application );
fmDBFormV.Show;
// fmDBFormV.Free; fmDBFormV := nil;
end;
procedure TfmMain.N2Click(Sender: TObject);
begin
fmDBFormD := TfmDBFormD.Create( Application );
fmDBFormD.Show;
// fmDBFormD.Free; fmDBFormD := nil;
end;
procedure TfmMain.N3Click(Sender: TObject);
begin
fmDBFormP := TfmDBFormP.Create( Application );
fmDBFormP.Show;
// fmDBFormP.Free; fmDBFormP := nil;
end;
procedure TfmMain.N5Click(Sender: TObject);
begin
fmDBTableV := TfmDBTableV.Create( Application );
fmDBTableV.Show;
// fmDBTableV.Free; fmDBTableV := nil;
end;
procedure TfmMain.N6Click(Sender: TObject);
begin
fmDBTableD := TfmDBTableD.Create( Application );
fmDBTableD.Show;
// fmDBTableD.Free; fmDBTableD := nil;
end;
procedure TfmMain.N7Click(Sender: TObject);
begin
fmDBTableP := TfmDBTableP.Create( Application );
fmDBTableP.Show;
// fmDBTableP.Free; fmDBTableP := nil;
end;
procedure TfmMain.N13Click(Sender: TObject);
begin
fmDBMasterDetailV := TfmDBMasterDetailV.Create( Application );
fmDBMasterDetailV.Show;
// fmDBMasterDetailV.Free; fmDBMasterDetailV := nil;
end;
procedure TfmMain.N14Click(Sender: TObject);
begin
fmDBMasterDetailDetali := TfmDBMasterDetailDetali.Create( Application );
fmDBMasterDetailDetali.Show;
// fmDBMasterDetailDetali.Free; fmDBMasterDetailDetali := nil;
end;
procedure TfmMain.N9Click(Sender: TObject);
begin
fmDBFormPostavky := TfmDBFormPostavky.Create( Application );
fmDBFormPostavky.Show;
// fmDBFormPostavky.Free; fmDBFormPostavky := nil;
end;
procedure TfmMain.N11Click(Sender: TObject);
begin
fmDBTablePostavky := TfmDBTablePostavky.Create( Application );
fmDBTablePostavky.Show;
// fmDBTablePostavky.Free; fmDBTablePostavky := nil;
end;
procedure TfmMain.N16Click(Sender: TObject);
begin
About := TAbout.Create( Application );
About.Show;
end;
end.
unit uDBTableD;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDBTable, DB, DBTables, DBCtrls, StdCtrls, Buttons, Grids,
DBGrids, ExtCtrls, jpeg;
type
TfmDBTableD = class(TfmDBTable)
Table1DNo: TStringField;
Table1DNazva: TStringField;
Table1Kolir: TStringField;
Table1Vaga: TSmallintField;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmDBTableD: TfmDBTableD;
implementation
{$R *.dfm}
procedure TfmDBTableD.Button1Click(Sender: TObject);
begin
inherited;
Table1.Filtered := False;
Table1.Filter := 'DNazva = ''' + Edit1.Text+ '''';
Table1.Filtered := True;
end;
procedure TfmDBTableD.Button2Click(Sender: TObject);
begin
inherited;
Table1.Filtered := False;
Table1.Filter := 'Kolir = ''' + Edit2.Text+ '''';
Table1.Filtered := True;
end;
end.
unit uDBForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uAny, DB, DBTables, DBCtrls, StdCtrls, Buttons, ExtCtrls, jpeg;
type
TfmDBForm = class(TfmAny)
DBNavigator1: TDBNavigator;
Table1: TTable;
DataSource1: TDataSource;
Label1: TLabel;
Label2: TLabel;
Image1: TImage;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmDBForm: TfmDBForm;
implementation
{$R *.dfm}
procedure TfmDBForm.BitBtn1Click(Sender: TObject);
begin
if Table1.State in [dsEdit, dsInsert] then
Table1.Post;
inherited;
end;
procedure TfmDBForm.BitBtn2Click(Sender: TObject);
begin
if Table1.State in [dsEdit, dsInsert] then
Table1.Cancel;
inherited;
end;
procedure TfmDBForm.DataSource1DataChange(Sender: TObject; Field: TField);
begin
inherited;
case Table1.State of
dsEdit : Label1.Caption := 'Ðåäàãóâàííÿ';
dsInsert: Label1.Caption := 'Âñòàâêà';
dsBrowse: Label1.Caption := 'Ïåðåãëÿä';
end;
case Table1.State of
dsEdit, dsBrowse:
Label2.Caption := 'Çàïèñ '+IntToStr(Table1.RecNo)
+' ³ç '+IntToStr(Table1.RecordCount);
dsInsert:
Label2.Caption := 'Íîâèé çàïèñ';
end;
end;
procedure TfmDBForm.FormActivate(Sender: TObject);
begin
inherited;
DataSource1DataChange(self, Table1.Fields[0]);
end;
procedure TfmDBForm.FormCreate(Sender: TObject);
begin
inherited;
Table1.Open;
end;
procedure TfmDBForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Table1.Close;
end;
end.
unit uMasterDetail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDBForm, DB, DBTables, DBCtrls, StdCtrls, Buttons, ExtCtrls,
Grids, DBGrids, jpeg;
type
TfmDBMasterDetail = class(TfmDBForm)
DBGrid1: TDBGrid;
DataSource2: TDataSource;
Table2: TTable;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmDBMasterDetail: TfmDBMasterDetail;
implementation
{$R *.dfm}
procedure TfmDBMasterDetail.FormCreate(Sender: TObject);
begin
inherited;
Table2.Open;
end;
procedure TfmDBMasterDetail.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
Table2.Close;
end;
procedure TfmDBMasterDetail.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
inherited;
if odd(table2.RecNo) then begin
with DBGrid1.Canvas do
begin
Brush.Color:=clGreen;
Font.Color:=clWhite;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
end;
end;
end;
end.
unit uDBTablePostavky;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDBTable, DB, DBTables, DBCtrls, StdCtrls, Buttons, Grids,
DBGrids, ExtCtrls, jpeg;
type
TfmDBTablePostavky = class(TfmDBTable)
Table2: TTable;
Table3: TTable;
Table4: TTable;
Table1VNo: TStringField;
Table1DNo: TStringField;
Table1PNo: TStringField;
Table1Kilkist: TSmallintField;
Table1V: TStringField;
Table1D: TStringField;
Table1P: TStringField;
Table1Data: TDateField;
Table1Cina: TFloatField;
Table1Suma: TFloatField;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmDBTablePostavky: TfmDBTablePostavky;
implementation
{$R *.dfm}
procedure TfmDBTablePostavky.Button1Click(Sender: TObject);
begin
inherited;
Table1.Filtered := False;
Table1.Filter := 'V = ''' + Edit1.Text+ '''';
Table1.Filtered := True;
end;
procedure TfmDBTablePostavky.Button2Click(Sender: TObject);
begin
inherited;
Table1.Filtered := False;
Table1.Filter := 'D = ''' + Edit2.Text+ '''';
Table1.Filtered := True;
end;
end.