![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть таблица StringGrid, пользователем указывается дата поступления на работу (например 11.07.1999).В общем, нужно сделать так чтобы при написании даты в ячейку 5-го столбца, в ячейке 7-го столбца высчитывалась надбавка за стаж по нынешнюю дату, которая складывается с окладом из ячейки 6-го столбца и сумма выводилась в ячейку 8-го столбца. :/
Надбавка за стаж считается следующим образом: От 5 до 10 лет – 10% от оклада; От 10 до 20 лет – 15% от оклада; Свыше 20 лет – 20% от оклада. |
#2
|
||||
|
||||
![]() YearsBetween + два IF-а и ELSE-а.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
![]() А еще можно сделать все это через DbGrid и вычисляемые поля.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
![]() Нужен именно StringGrid
|
#5
|
||||
|
||||
![]() Цитата:
Код:
function clc(ds, vs: string; var n: string): string; var m, d, y, mc, dc, yc: Word; i: integer; b: variant; begin DecodeDate(StrToDate(ds), y, m, d); DecodeDate(Date, yc, mc, dc); i:= 0; b:= 0; if (y = yc) and (m = mc) and (d = dc) then begin n:= 'Нет'; Result:= vs; end else begin i:= yc - y; if (m > mc) then Dec(i) else if (m = mc) and (d > dc) then Dec(i); end; if i < 5 then begin n:= 'Нет'; Result:= vs; Exit; end; if (i >= 5) and (i <= 10) then b:= 0.1; if (i > 10) and (i <= 20) then b:= 0.15; if (i > 20) then b:= 0.20; n:= FloatToStr(StrToFloat(vs) * b); Result:= FloatToStr(StrToFloat(vs) + (StrToFloat(vs) * b)); end; procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var s: string; begin with (Sender as TStringGrid) do if (not EditorMode) and (ACol = 5) then begin Cells[8, aRow]:= clc(Cells[5, aRow], Cells[6, aRow], s); Cells[7, aRow]:= s; end; end; ![]() З.Ы. Наверное в денежной системе нужно было исчислять оклад, здесь он без "копеек", извиняйте Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 18.11.2014 в 07:13. Причина: баг вычисления процентов |