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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
120
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();
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 T.id As id, R.id AS [Табельный №],
R.ФИО AS ФИО, O.наименование AS Отдел, D.наименование AS Должность,
Op.наименование AS [Операция], T.[количествочасов] 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");
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->Active=true;
121
}
//---------------------------------------------------------------------------
void __fastcallTForm_tabel::FormClose(TObject *Sender,
TCloseAction&Action)
{
ADOQuery1->Active=false;
ADOConnection1->Connected = false;
}
//---------------------------------------------------------------------------
void __fastcallTForm_tabel::ButtonInsertClick(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT id FROM Отделы WHERE
наименование = \""+ComboBox_otd->Items->Strings[ComboBox_otd-
>ItemIndex]+"\"");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
AnsiStringotd = ADOQuery1->FieldByName("id")->AsString;
ADOQuery1->Close();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT id FROM Должности WHERE
наименование = \""+ComboBox_dol->Items->Strings[ComboBox_dol-
>ItemIndex]+"\"");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
AnsiStringdol = ADOQuery1->FieldByName("id")->AsString;
ADOQuery1->Close();
//Label3->Caption = DateToStr(DateTimePicker_datefrom->Date);
122
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT id FROM Операции WHERE
наименование = \""+ComboBox_oper->Items->Strings[ComboBox_oper-
>ItemIndex]+"\"");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
AnsiStringoper = ADOQuery1->FieldByName("id")->AsString;
ADOQuery1->Close();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("INSERT INTO [Табель] (код_работника,
код_операции, [количествочасов], [дата]) VALUES ("+Edit_tab->Text+",
"+oper+", "+Edit_kol->Text+", '"+DateToStr(DateTimePicker_datefrom->Date)+"')");
inti = ADOQuery1->ExecSQL();
if (i) MessageDlg("Записьуспешнодобавлена", mtWarning,
TMsgDlgButtons()<<mbOK,0);
ADOQuery1->Close();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
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 = "+Edit_tab->Text+") GROUP BY [Табельный №]");
ADOQuery1->ExecSQL();
123
ADOQuery1->Active=true;
AnsiStringsred = ADOQuery1->FieldByName("Среднее")->AsString;
ADOQuery1->Close();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE [Работники] SET
средний_заработок = "+sred+" WHERE id = "+Edit_tab->Text);
i = ADOQuery1->ExecSQL();
if (i) MessageDlg("Произведенуспешныйперерасчетсреднейзарплаты",
mtWarning, TMsgDlgButtons()<<mbOK,0);
ADOQuery1->Close();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT T.id As id, R.id AS [Табельный №],
R.ФИО AS ФИО, O.наименование AS Отдел, D.наименование AS Должность,
Op.наименование AS [Операция], T.[количествочасов] 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");
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcallTForm_tabel::ComboBox_dolChange(TObject *Sender)
{
ADOQuery2->Close();
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("SELECT DISTINCT id, ФИО FROM
Работники WHERE код_отдела IN ( SELECT id FROM Отделы WHERE
124
наименование = '" + 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();
while(!ADOQuery2->Eof){
ComboBox_fio->Items->Add(ADOQuery2->FieldByName("ФИО")-
>AsString);
ADOQuery2->Next();
}
ADOQuery2->Active=false;
ComboBox_fio->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcallTForm_tabel::ComboBox_otdChange(TObject *Sender)
{
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();
Источник: https://baza.diplomsite.ru/previewfile/2463