sibprogsistem wrote:SQLExacute('INSERT INTO Таблица(поле) VALUES("'+переменная с результатом вычисления+'")');
но это не совсем правильно потому как нужно сохранять с привязкой к работнику ..
будет проще если вы создадите отдельную форму и настроите ее визуально..
Спасибо, попробую. на самом деле я упростил здесь вопрос дабы не перегружать мозг читателя. мой SQL запрос выглядит следующим образом:
procedure update_report_Staff();
var v, sql: string;
begin
v := (copy(FrmOne.DTP_PayRoll_Year.sqlDate, 2, 7));
SQL := 'SELECT "$autoinc", Staff.Famaly AS "Фамилия", Staff.FirstName AS "Имя", Staff.LastName AS "Отчество",' +
' WorkCalendar.Hours AS "час",' +
' Staff.Oklad AS "Оклад",' +
' sum(ReportCard.Time) AS "факт",' +
' sum(ReportCard.Time) - (WorkCalendar.Hours) AS "Час.Перераб.",' +
' (IfNull(KTU.Bonus, 1) * (Staff.Oklad / WorkCalendar.Hours) * (1.5 * max(0, sum(ReportCard.Time) - hours))) AS "Сумма",' +
' IfNull(KTU.Bonus, 1) AS "КТУ",' +
' (IfNull(KTU.Bonus, 1) * (Staff.Oklad / WorkCalendar.Hours) * (min(sum(ReportCard.Time), WorkCalendar.Hours) + (1.5 * max(0, sum(ReportCard.Time) - hours)))) AS "К выдаче",' +
' (IfNull(KTU.Bonus, 1) * (Staff.Oklad / WorkCalendar.Hours) * (min(sum(ReportCard.Time), WorkCalendar.Hours) + (1.5 * max(0, sum(ReportCard.Time) - hours))) * 0.06383) AS "Налог",' +
' (IfNull(KTU.Bonus, 1) * (Staff.Oklad / WorkCalendar.Hours) * (min(sum(ReportCard.Time), WorkCalendar.Hours) + (1.5 * max(0, sum(ReportCard.Time) - hours))) * 1.06383) AS "Перевод"' +
' FROM ReportCard' +
' LEFT JOIN Staff ON ReportCard.id_Staff == Staff.id' +
' LEFT JOIN WorkCalendar ON WorkCalendar.YearMounth LIKE "' + v + '-% 00:00:00.000"' +
' LEFT JOIN KTU ON (Staff.id == KTU.id_Staff AND KTU.Mounth LIKE "' + v + '-% 00:00:00.000")' +
' WHERE DateIn LIKE "' + v + '-% 00:00:00.000" and Staff.Oklad <> "0"' +
' group by Staff.id;';
FrmOne.Button15.dbSQL := sql;
end;
тоесть для записи например в таблицу Pay строку вида: id.Staff / дата 01.01.2021 / Summa 55000 - где id.Staff внешняя ссылка к работнику мне придется............. сильно подумать)))
В идеале добавить кнопку "передать в оплату" по которой все полученные из запроса записи (=количеству работников) записать в таблицу Pay.