Диплом: Автоматизация учета сдельной оплаты труда в ОАО "Научно-исследовательский институт технологии, контроля и диагностики железнодорожного транспорта"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
130
if(CheckBox_oper->Checked) ADOQuery1->SQL->Add(" AND
Op.наименование = \""+ComboBox_oper->Items->Strings[ComboBox_oper-
>ItemIndex]+"\"");
if(CheckBox_datefrom->Checked) ADOQuery1->SQL->Add(" AND T.дата>=
DateValue('"+FormatDateTime("dd/mm/yyyy",DateToStr(DateTimePicker_datefrom-
>Date))+"')");
if(CheckBox_dateto->Checked) ADOQuery1->SQL->Add(" AND T.дата<=
DateValue('"+FormatDateTime("dd/mm/yyyy",DateToStr(DateTimePicker_dateto-
>Date))+"')");
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->Active=true;
}
//---------------------------------------------------------------------------
131
ПРИЛОЖЕНИЕ 8
Листинг модуля «Расчет заработной платы»
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Raschet.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm_zp *Form_zp;
//---------------------------------------------------------------------------
__fastcallTForm_zp::TForm_zp(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcallTForm_zp::FormShow(TObject *Sender)
{
ADOConnection1->ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="+GetCurrentDir()+"\\ras4et_zp.mdb"+";Persist Security Info=False";
ADOTable1->Active = true;
ADOTable1->First();
ComboBox_otd->Items->Clear();
while(!ADOTable1->Eof){
ComboBox_otd->Items->Add(ADOTable1->FieldByName("наименование")-
>Value);
132
ADOTable1->Next();
}
ADOTable1->Active=false;
ComboBox_otd->ItemIndex = 0;
ADOTable2->Active = true;
ADOTable2->First();
ComboBox_dol->Items->Clear();
while(!ADOTable2->Eof){
ComboBox_dol->Items->Add(ADOTable2->FieldByName("наименование")-
>Value);
ADOTable2->Next();
}
ADOTable2->Active=false;
ComboBox_dol->ItemIndex = 0;
ADOQuery2->Close();
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("SELECT DISTINCT id, ФИО FROM
Работники WHERE код_отдела IN ( SELECT id FROM Отделы WHERE
наименование = '" + ComboBox_otd->Items->Strings[ComboBox_otd->ItemIndex]
+"') AND код_должности IN ( SELECT id FROM Должности WHERE
наименование = '" + ComboBox_dol->Items->Strings[ComboBox_dol->ItemIndex]
+"')");
ADOQuery2->ExecSQL();
ADOQuery2->Active=true;
ADOQuery2->First();
Edit_tab->Text = ADOQuery2->FieldByName("id")->AsString;
ComboBox_fio->Items->Clear();
133
while(!ADOQuery2->Eof){
ComboBox_fio->Items->Add(ADOQuery2->FieldByName("ФИО")-
>AsString);
ADOQuery2->Next();
}
ADOQuery2->Active=false;
ComboBox_fio->ItemIndex = 0;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
//ADOQuery1->SQL->Add("SELECT R.id AS [Табельный №],
(T.[количествочасов]*Op.оплата) AS Сделка,
IIf(Op.наименование='Больничный',0,IIf(Op.наименование='Отпуск',0,T.[количес
твочасов])) AS Часы FROM Работники AS R, Отделы AS O, Должности AS D,
Табель AS T, Операции AS Op WHERE O.id=R.код_отдела And
D.id=R.код_должности And T.код_работника=R.id And T.код_операции=Op.id");
//ADOQuery1->SQL->Add("SELECT [Табельный №],
SUM(Сделка)/SUM(Часы) AS Среднее FROM (SELECT R.id AS [Табельный №],
(T.[количествочасов]*Op.оплата) AS Сделка,
IIf(Op.наименование='Больничный',0,IIf(Op.наименование='Отпуск',0,T.[количес
твочасов])) AS Часы FROM Работники AS R, Отделы AS O, Должности AS D,
Табель AS T, Операции AS Op WHERE O.id=R.код_отдела And
D.id=R.код_должности And T.код_работника=R.id And T.код_операции=Op.id
AND R.id = 2) GROUP BY [Табельный №]");
//ADOQuery1->SQL->Add("SELECT R.id AS [Табельный №], R.ФИО AS
ФИО, D.наименование AS Должность, O.наименование AS Отдел,
(T.[количествочасов]*Op.оплата) AS Сделка,
IIf(Op.наименование='Больничный',ROUND((T.[количествочасов]*R.средний_за
134
работок*(SELECT FIRST(значение) FROM Коэффициенты WHERE
наименование = 'Больничный')),0),0) AS Больничные,
IIf(Op.наименование='Отпуск',(T.[количествочасов]*R.средний_заработок*(SEL
ECT FIRST(значение) FROM Коэффициенты WHERE наименование =
'Отпуск')),0) AS Отпускные, T.дата AS Дата FROM Работники AS R, Отделы AS
O, Должности AS D, Табель AS T, Операции AS Op WHERE O.id=R.код_отдела
And D.id=R.код_должности And T.код_работника=R.id And
T.код_операции=Op.id");
//SELECT [Табельный №], ФИО, Должность, Отдел, SUM(Сделка) AS
Заработано, SUM(Больничные) AS БЛ, SUM(Отпускные) AS Отпуск FROM
Запрос1 GROUP BY [Табельный №], ФИО, Должность, Отдел
ADOQuery1->SQL->Add("SELECT [Табельный №], ФИО, Должность,
Отдел, Заработано AS Сделка, БЛ AS Больничные, Отпуск AS Отпускные,
(Заработано+БЛ+Отпуск) AS Итого FROM "
"(SELECT [Табельный №], ФИО, Должность, Отдел, SUM(Сделка)
AS Заработано, SUM(Больничные) AS БЛ, SUM(Отпускные) AS Отпуск FROM "
"(SELECT R.id AS [Табельный №], R.ФИО AS ФИО, D.наименование
AS Должность, O.наименование AS Отдел, (T.[количество часов]*Op.оплата) AS
Сделка, IIf(Op.наименование='Больничный',ROUND((T.[количество
часов]*R.средний_заработок*(SELECT FIRST(значение) FROM Коэффициенты
WHERE наименование = 'Больничный')),0),0) AS Больничные,
IIf(Op.наименование='Отпуск',ROUND((T.[количество
часов]*R.средний_заработок*(SELECT FIRST(значение) FROM Коэффициенты
WHERE наименование = 'Отпуск')),0),0) AS Отпускные, T.дата AS Дата FROM
Работники AS R, Отделы AS O, Должности AS D, Табель AS T, Операции AS Op
WHERE O.id=R.код_отделаAnd D.id=R.код_должностиAnd
T.код_работника=R.id AndT.код_операции=Op.id) GROUP BY [Табельный №],
ФИО, Должность, Отдел)");
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->Active=true;
135
}
//---------------------------------------------------------------------------
void __fastcallTForm_zp::FormClose(TObject *Sender,
TCloseAction&Action)
{
ADOQuery1->Active=false;
ADOConnection1->Connected = false;
}
//---------------------------------------------------------------------------
void __fastcallTForm_zp::ButtonSearchClick(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT [Табельный №], ФИО, Должность,
Отдел, Заработано AS Сделка, БЛ AS Больничные, Отпуск AS Отпускные,
(Заработано+БЛ+Отпуск) AS Итого FROM "
"(SELECT [Табельный №], ФИО, Должность, Отдел, SUM(Сделка)
AS Заработано, SUM(Больничные) AS БЛ, SUM(Отпускные) AS Отпуск FROM "
"(SELECT R.id AS [Табельный №], R.ФИО AS ФИО, D.наименование
AS Должность, O.наименование AS Отдел, (T.[количество часов]*Op.оплата) AS
Сделка, IIf(Op.наименование='Больничный',ROUND((T.[количество
часов]*R.средний_заработок*(SELECT FIRST(значение) FROM Коэффициенты
WHERE наименование = 'Больничный')),0),0) AS Больничные,
IIf(Op.наименование='Отпуск',ROUND((T.[количество
часов]*R.средний_заработок*(SELECT FIRST(значение) FROM Коэффициенты
WHERE наименование = 'Отпуск')),0),0) AS Отпускные, T.дата AS Дата FROM
Работники AS R, Отделы AS O, Должности AS D, Табель AS T, Операции AS Op
WHERE O.id=R.код_отделаAnd D.id=R.код_должностиAnd
T.код_работника=R.id AndT.код_операции=Op.id");
136
if(CheckBox_otd->Checked) ADOQuery1->SQL->Add(" AND
O.наименование = \""+ComboBox_otd->Items->Strings[ComboBox_otd-
>ItemIndex]+"\"");
if(CheckBox_dol->Checked) ADOQuery1->SQL->Add(" AND
D.наименование = \""+ComboBox_dol->Items->Strings[ComboBox_dol-
>ItemIndex]+"\"");
if(CheckBox_fio->Checked) ADOQuery1->SQL->Add(" AND R.id =
"+Edit_tab->Text);
//if(CheckBox_oper->Checked) ADOQuery1->SQL->Add(" AND
Op.наименование = \""+ComboBox_oper->Items->Strings[ComboBox_oper-
>ItemIndex]+"\"");
if(CheckBox_datefrom->Checked) ADOQuery1->SQL->Add(" AND T.дата>=
DateValue('"+FormatDateTime("dd/mm/yyyy",DateToStr(DateTimePicker_datefrom-
>Date))+"')");
if(CheckBox_dateto->Checked) ADOQuery1->SQL->Add(" AND T.дата<=
DateValue('"+FormatDateTime("dd/mm/yyyy",DateToStr(DateTimePicker_dateto-
>Date))+"')");
ADOQuery1->SQL->Add(") GROUP BY [Табельный №], ФИО, Должность,
Отдел)");
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->Active=true;
}
//---------------------------------------------------------------------------

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)