FROM Brigada
[ФИО и адрес начальников]
SELECT FIO_nach_ceha, Adres
FROM Ceh
[ФИО работников, выходящих в этом году на пенсию]
SELECT FIO_rabotnika, Primechanie
FROM Rabotnik WHERE Primechanie='на пенсию'
[ФИО работников, уходящих в текущем месяце в отпуск]
SELECT FIO_rabotnika, Primechanie
FROM Rabotnik WHERE Primechanie='в отпуске'
[Список работающих пенсионеров]
SELECT FIO_rabotnika, Primechanie
FROM Rabotnik WHERE Primechanie='пенсионер'
[Список работников, находящихся в декретном отпуске]
SELECT FIO_rabotnika, Primechanie
FROM Rabotnik WHERE Primechanie='декрет'
Интерфейс программы состоит из одного окна, содержащего две основные вкладки При запуске программы открывается окно с активной вкладкой «Таблицы» (рисунок 3).
Здесь переключатели с названиями всех таблиц БД «Кадры предприятия»
Рисунок 3 - Окно программы
При нажатии на переключатель «Цех», «Бригада» или «Работник» появляется таблица, содержащая данные о цехе, бригаде или работниках (рисунок 4).
В каждой из таблиц можно удалять, добавлять записи, корректировать их, также можно свободно перемещаться по записям (переход в начало-конец, следующая-предыдущая запись).
Рисунок 4 –Окно программы
Аналогично, нажав на вкладку «Запросы», выводится список всех запросов (рисунок 5).
Рисунок 5 – Окно программы.
Рисунок 6 – Результат запроса: «Список работников, поступивших на предприятие в течение последнего месяца»
Рисунок 7 - Результат запроса: «Состав бригады по стажу работы»
Рисунок 8 - Результат запроса: «ФИО и адрес бригадиров»
Рисунок 9. Результат запроса: «ФИО и адрес начальников цеха»
Рисунок 10. Результат запроса: «ФИО рабо тников по примечанию»
Рисунок 11 – Отчет по запросу: «ФИО и адрес бригадиров»
В заключении необходимо отметить, что несмотря на кажущуюся простоту задачи, в ходе выполнения проекта встречались затруднения, которые нужно было обходить стороной, немного изменяя таким образом алгоритм ее решения. Тем не менее в нем были реализованы такие задачи как:
- построение удобного пользовательского интерфейса;
-справки;
-ввод, корректировка,обработка данных;
-формирование отчетов и запросов с возможностью вывода нужной информации.
1. Терлецкая А.М. – лекции.
2. Т.Карпова – Базы данных: модели, разработка, реализация. Уч. пособие – СПб: Питер,2001.
3. Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – М.: Финансы и статистика, 1989. – 351 с.
Приложение А. Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, ComCtrls,
QRCtrls, QuickRpt, Menus;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DataSource2: TDataSource;
ADOTable2: TADOTable;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
ADOTable3: TADOTable;
DataSource3: TDataSource;
DBGrid3: TDBGrid;
DBNavigator3: TDBNavigator;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
Button1: TButton;
ADOQuery1: TADOQuery;
DataSource4: TDataSource;
DBGrid4: TDBGrid;
ComboBox1: TComboBox;
Label1: TLabel;
ComboBox2: TComboBox;
Label2: TLabel;
Button2: TButton;
QuickRep1: TQuickRep;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
ColumnHeaderBand1: TQRBand;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
DetailBand1: TQRBand;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
procedure RadioGroup1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Выбор таблицы (Цех, Бригада или Работник)
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then // Цех
begin
dbgrid1.Visible:=true;
dbNavigator1.Visible:=true;
dbgrid2.Visible:=false;
dbNavigator2.Visible:=false;
dbgrid3.Visible:=false;
dbNavigator3.Visible:=false;
end;
if RadioGroup1.ItemIndex=1 then // Бригада
begin
dbgrid2.Visible:=true;
dbNavigator2.Visible:=true;
dbgrid1.Visible:=false;
dbNavigator1.Visible:=false;
dbgrid3.Visible:=false;
dbNavigator3.Visible:=false;
end;
if RadioGroup1.ItemIndex=2 then // Работник
begin
dbgrid3.Visible:=true;
dbNavigator3.Visible:=true;
dbgrid2.Visible:=false;
dbNavigator2.Visible:=false;
dbgrid1.Visible:=false;
dbNavigator1.Visible:=false;
end;
end;
// Кнопка Выполнить запрос
procedure TForm1.Button1Click(Sender: TObject);
begin
DbGrid4.Visible:=true;
case RadioGroup2.ItemIndex of
0: // Запрос 'Список работников, поступивших на //предприятие в течение последнего месяца'
begin
QRLabel1.Caption:='Список работников, поступивших на предприятие в течение последнего месяца';
QRLabel2.Caption:='ФИО работника';
QRLabel3.Caption:='Должность';
ADOQuery1.SQL.Text:='SELECT FIO_rabotnika,Doljnost, Data_postupleniya FROM Rabotnik WHERE ((Data_postupleniya) >(''12'+'-'+'01'+'-'+'2007''))';
ADOQuery1.Active:=true;
QRDBText1.DataField:='FIO_rabotnika';
QRDBText2.DataField:='Doljnost';
button2.Enabled:=true;
end;
1: // Запрос 'Состав бригады по стажу работы'
begin
QRLabel1.Caption:='Состав '+Combobox2.Text+' по стажу работы';
QRLabel2.Caption:='ФИО работника';
QRLabel3.Caption:='Стаж';
ADOQuery1.SQL.Text:='SELECT FIO_rabotnika, Naimenovanie_brigadi, Staj FROM Rabotnik WHERE (Naimenovanie_brigadi='''+Combobox2.Text+''')';
ADOQuery1.Active:=true;
QRDBText1.DataField:='FIO_rabotnika';
QRDBText2.DataField:='Staj';
button2.Enabled:=true;
end;
2: // Запрос 'ФИО и адрес бригадиров'
begin
QRLabel1.Caption:='ФИО и адрес бригадиров';
QRLabel2.Caption:='ФИО бригадира';
QRLabel3.Caption:='Адрес';
ADOQuery1.SQL.Text:='SELECT FIO_brigadira, Adres FROM Brigada';
ADOQuery1.Active:=true;
QRDBText1.DataField:='FIO_brigadira';
QRDBText2.DataField:='Adres';
button2.Enabled:=true;
end;
3: // Запрос 'ФИО и адрес начальников'
begin
QRLabel1.Caption:='ФИО и адрес начальников';
QRLabel2.Caption:='ФИО начальника цеха';
QRLabel3.Caption:='Адрес';
ADOQuery1.SQL.Text:='SELECT FIO_nach_ceha, Adres FROM Ceh';
ADOQuery1.Active:=true;
QRDBText1.DataField:='FIO_nach_ceha';
QRDBText2.DataField:='Adres';
button2.Enabled:=true;
end;
4: // Запрос
begin
QRLabel1.Caption:='ФИО работников по запросу';
QRLabel2.Caption:='ФИО работника';
QRLabel3.Caption:='Примечание';
ADOQuery1.SQL.Text:='SELECT FIO_rabotnika, Primechanie FROM Rabotnik WHERE Primechanie='''+Combobox1.Text+'''';
ADOQuery1.Active:=true;
QRDBText1.DataField:='FIO_rabotnika';
QRDBText2.DataField:='Primechanie';
button2.Enabled:=true;
end;
end;
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
Case Radiogroup2.ItemIndex of
0:
begin
button2.Enabled:=false;
Label1.Visible:=false;
Combobox1.Visible:=false;
Label2.Visible:=false;
Combobox2.Visible:=false;
end;
1:
begin
button2.Enabled:=false;
Label1.Visible:=false;
Combobox1.Visible:=false;
Label2.Visible:=true;
Combobox2.Visible:=true;
end;
2:
begin
button2.Enabled:=false;
Label1.Visible:=false;
Combobox1.Visible:=false;
Label2.Visible:=false;
Combobox2.Visible:=false;
end;
4:
begin
button2.Enabled:=false;
Label1.Visible:=true;
Combobox1.Visible:=true;
Label2.Visible:=false;
Combobox2.Visible:=false;
end;
3:
begin
button2.Enabled:=false;
Label1.Visible:=false;
Combobox1.Visible:=false;
Label2.Visible:=false;
Combobox2.Visible:=false;
end;
end;
end;
// Кнопка «Сформировать отчет»
procedure TForm1.Button2Click(Sender: TObject);
begin
quickrep1.Preview;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
button2.Enabled:=false;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
button2.Enabled:=false;
end;
end.