Дипломная работа: Автоматизация учета рабочего времени и расчета заработной платы на предприятии ОАО "Пелла"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
112
+' ORDER BY sotrudnik.family, sotrudnik.first_name, sotrudnik.second_name;';
datamodule1.Query_view_sotrudnik.Close; datamodule1.Query_view_sotrudnik.SQL.Clear;
datamodule1.Query_view_sotrudnik.SQL.Text := buf_zapros; datamodule1.Query_view_sotrudnik.Open;
view_dbgrid;end;
procedure TForm_sotrudnik.view_dolgnost;
Var buf_zapros : string;
begin
if form_sotrudnik.DBGrid_otdel.DataSource.DataSet.RecordCount <> 0 then
begin
buf_zapros := 'SELECT dolgnost.id_dolgnost, dolgnost.name_dolgnost as Должность, dolgnost.oklad as Оклад'
+' FROM otdel INNER JOIN dolgnost ON otdel.id_otdel = dolgnost.id_otdel '
+' WHERE otdel.id_otdel =
'+form_sotrudnik.DBGrid_otdel.DataSource.DataSet.FieldByName('id_otdel').AsString
+' ORDER BY dolgnost.name_dolgnost;';
datamodule1.Query_view_dolgnost.Close; datamodule1.Query_view_dolgnost.SQL.Clear;
datamodule1.Query_view_dolgnost.SQL.Text := buf_Zapros; datamodule1.Query_view_dolgnost.Open;
view_dbgrid_dolgnost; end;
end;
procedure TForm_sotrudnik.view_otdel;
var buf_zapros : string;
begin
if form_sotrudnik.DBGrid_zavod.DataSource.DataSet.RecordCount <> 0 then
begin
buf_zapros := 'SELECT otdel.id_otdel, otdel.name_otdel as Название_отдела '
+' FROM otdel '
+' WHERE otdel.id_zavod =
'+form_sotrudnik.DBGrid_zavod.DataSource.DataSet.FieldByName('id_zavod').AsString
+' ORDER BY otdel.name_otdel;'; datamodule1.Query_otdel_view.Close;
datamodule1.Query_otdel_view.SQL.Clear; datamodule1.Query_otdel_view.SQL.Text := buf_zapros;
datamodule1.Query_otdel_view.Open; view_dbgrid_otdel;
view_dolgnost_view; end;
end;
procedure TForm_sotrudnik.view_dbgrid_otdel;
begin
form_sotrudnik.DBGrid_otdel.Columns[0].Visible := False; form_sotrudnik.DBGrid_otdel.Columns[1].Width :=
280;
end;
procedure TForm_sotrudnik.view_dolgnost_view;
var buf_zapros : string;
begin
113
if form_sotrudnik.DBGrid_otdel.DataSource.DataSet.RecordCount <> 0 then
buf_Zapros := 'SELECT dolgnost.id_dolgnost, dolgnost.name_dolgnost as Должность, dolgnost.oklad as Оклад '
+' FROM dolgnost '
+' WHERE dolgnost.id_otdel =
'+form_sotrudnik.DBGrid_otdel.DataSource.DataSet.FieldByName('id_otdel').AsString
+';'
else
buf_Zapros := 'SELECT dolgnost.id_dolgnost, dolgnost.name_dolgnost as Должность, dolgnost.oklad as
Оклад '
+' FROM dolgnost '
+' WHERE dolgnost.id_otdel = -1;'; datamodule1.Query_dolgnost.Close;
datamodule1.Query_dolgnost.SQL.Clear; datamodule1.Query_dolgnost.SQL.Text := buf_zapros;
datamodule1.Query_dolgnost.Open; view_dbgrid_dolgnost;
end;
procedure TForm_sotrudnik.view_dbgrid_dolgnost;
begin
form_sotrudnik.DBGrid_dolgnost.Columns[0].Visible := False;
form_sotrudnik.DBGrid_dolgnost.Columns[1].Width := 200;
form_sotrudnik.DBGrid_dolgnost.Columns[2].Width := 80;
end;
procedure TForm_time.clear_label;
begin
form_time.Label2.Caption := '';
end;
procedure TForm_time.Button1Click(Sender: TObject);
var run_procedure : boolean;
begin
//чищу сообщение об ошибке
clear_label;
//присваиваю начальные значения
run_procedure := True;
try
Strtofloat(form_time.Edit_time.Text);
except
on EConvertError do
begin
run_procedure := False;
form_time.Label2.Caption := 'Не верно введено время';
end; //begib on
end;//try
//проверка закнчена
if run_procedure then
begin
add_time;
114
end;
end;
procedure TForm_time.Button_saveClick(Sender: TObject);
var buf_zapros : string;
i : integer;
buf_kav : string;
myYear, myMonth, myDay : Word;
date_time : string;
begin
if form_time.StringGrid_time.RowCount <> 1 then
begin
buf_kav := '''';
DecodeDate(form_time.MonthCalendar1.Date, myYear, myMonth, myDay);
date_time := buf_kav+inttostr(myYear)+'-'+inttostr(myMonth)+'-'+inttostr(myDay)+buf_kav;//YYYY-MM-DD
for i := 1 to form_time.StringGrid_time.RowCount-1 do
begin
//узнаю есть ли запись за это день. Если есть - то апдейт, если нет - инсерт
buf_zapros := 'SELECT work_time.kolvo_hours '
+' FROM sotrudnik INNER JOIN work_time ON sotrudnik.tabel_nomer = work_time.tabel_nomer '
+' WHERE sotrudnik.tabel_nomer = '+ buf_kav+form_time.StringGrid_time.Cells[0,i]+buf_kav
+' AND work_time.date_work = '+date_time+';';
datamodule1.Query_buf.Close;
datamodule1.Query_buf.SQL.Clear;
datamodule1.Query_buf.SQL.Text := buf_zapros;
datamodule1.Query_buf.Open;
if datamodule1.Query_buf.RecordCount = 0 then
buf_zapros := 'INSERT INTO work_time (tabel_nomer,date_work,kolvo_hours) VALUES ('
+buf_kav+form_time.StringGrid_time.Cells[0,i]+buf_kav+','
+date_time+','
+form_time.StringGrid_time.Cells[2,i]+')'
+';'
else
buf_zapros := 'UPDATE work_time SET kolvo_hours = '+form_time.StringGrid_time.Cells[2,i]
+' WHERE tabel_nomer = ' +buf_kav+form_time.StringGrid_time.Cells[0,i]+buf_kav
+' AND date_work = '+date_time
+';';
datamodule1.Query_buf.Close;
datamodule1.Query_buf.SQL.Clear;
datamodule1.Query_buf.SQL.Text := buf_zapros;
datamodule1.Query_buf.ExecSQL;
datamodule1.Query_buf.Close;
end;
end;
end;
procedure TForm_time.add_time;
var i : integer;
begin
if form_time.StringGrid_time.RowCount <> 1 then
begin
for i := 1 to form_time.StringGrid_time.RowCount do
begin
form_time.StringGrid_time.Cells[2,i] := form_time.Edit_time.Text;
end;
end;
115
end;
procedure TForm_time.DBGrid_otdelCellClick(Column: TColumn);
begin
view_sotrudnik;
end;
procedure TForm_time.DBGrid_zavodCellClick(Column: TColumn);
begin
view_otdel;
end;
procedure TForm_time.Edit_timeKeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['0'..'9','.',#8] then
else key :=#0
end;
procedure TForm_time.FormCreate(Sender: TObject);
begin
clear_label;
end;
procedure TForm_time.FormShow(Sender: TObject);
begin
view_otdel;
end;
procedure TForm_time.MonthCalendar1Click(Sender: TObject);
begin
view_sotrudnik;
form_time.Label3.Caption := 'Рабочее время за '+datetostr(form_time.MonthCalendar1.Date);
end;
procedure TForm_time.StringGrid_timeKeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['0'..'9','.',#8] then
else key :=#0
end;
procedure TForm_time.view_sotrudnik;
var buf_Zapros : string;
buf_kav : string;
i : integer;
myYear, myMonth, myDay : Word;
date_time : string;
kolvo_hours1 : real;
begin
buf_kav := '''';
form_time.Label3.Caption := 'Количество учтенного времени за '+datetostr(form_time.MonthCalendar1.Date);
//получаю дату
DecodeDate(form_time.MonthCalendar1.Date, myYear, myMonth, myDay);
date_time := buf_kav+inttostr(myYear)+'-'+inttostr(myMonth)+'-'+inttostr(myDay)+buf_kav;//YYYY-MM-DD
Form_time.StringGrid_time.ColWidths[0] := 80;//табельный номер
Form_time.StringGrid_time.ColWidths[1] := 250;//фио
Form_time.StringGrid_time.ColWidths[2] := 70;//время
116
buf_zapros := 'SELECT sotrudnik.tabel_nomer, CONCAT(sotrudnik.family,'+buf_kav+' '+buf_kav+',
sotrudnik.first_name,'+buf_kav+' '+buf_kav+', sotrudnik.second_name) AS FIO '
+' FROM otdel INNER JOIN (dolgnost INNER JOIN sotrudnik ON dolgnost.id_dolgnost =
sotrudnik.id_dolgnost) ON otdel.id_otdel = dolgnost.id_otdel '
+' WHERE otdel.id_otdel = '+form_time.DBGrid_otdel.DataSource.DataSet.FieldByName('id_otdel').AsString
+' ORDER BY sotrudnik.family, sotrudnik.first_name;';
datamodule1.Query_buf.Close;
datamodule1.Query_buf.SQL.Clear;
datamodule1.Query_buf.SQL.Text := buf_Zapros;
datamodule1.Query_buf.Open;
//вывожу количество строк
form_time.StringGrid_time.RowCount := datamodule1.Query_buf.RecordCount+1;
//заполняю столбцы
i:= 0;
form_time.StringGrid_time.Cells[0,i] := 'Табель_номер';
form_time.StringGrid_time.Cells[1,i] := 'ФИО';
form_time.StringGrid_time.Cells[2,i] := 'Время';
datamodule1.Query_buf.First;
i := 1;
while not datamodule1.Query_buf.eof do
begin
//узнаю время работы
buf_Zapros := 'SELECT IfNull(kolvo_hours,0) as kolvo_hours1'
+' FROM work_time '
+' WHERE work_time.date_work = '+date_time
+' AND work_time.tabel_nomer =
'+buf_kav+datamodule1.Query_buf.FieldByName('tabel_nomer').AsString+buf_kav+';';
datamodule1.Query_buf1.Close;
datamodule1.Query_buf1.SQL.Clear;
datamodule1.Query_buf1.SQL.Text := buf_Zapros;
datamodule1.Query_buf1.Open;
if datamodule1.Query_buf1.RecordCount = 0 then
kolvo_hours1 := 0
else
kolvo_hours1 := datamodule1.Query_buf1.FieldByName('kolvo_hours1').AsFloat;
form_time.StringGrid_time.Cells[0,i] := datamodule1.Query_buf.FieldByName('tabel_nomer').AsString;
form_time.StringGrid_time.Cells[1,i] := datamodule1.Query_buf.FieldByName('FIO').AsString;
form_time.StringGrid_time.Cells[2,i] := floattostr(kolvo_hours1);
i:= i+1;
datamodule1.Query_buf.Next;
end;
end;
procedure TForm_time.view_otdel;
var buf_zapros : string;
begin
if form_time.DBGrid_zavod.DataSource.DataSet.RecordCount <> 0 then
begin
buf_zapros := 'SELECT otdel.id_otdel, otdel.name_otdel as Название_отдела '
+' FROM otdel '
+' WHERE otdel.id_zavod =
'+form_time.DBGrid_zavod.DataSource.DataSet.FieldByName('id_zavod').AsString
+' ORDER BY otdel.name_otdel;';
datamodule1.Query_otdel_view.Close;
datamodule1.Query_otdel_view.SQL.Clear;
datamodule1.Query_otdel_view.SQL.Text := buf_zapros;
Источник: https://baza.diplomsite.ru/previewfile/2418