Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.11.2014, 01:35
Wandalin Wandalin вне форума
Прохожий
 
Регистрация: 14.11.2014
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию StringGrid вычисление стажа по заданной дате

Есть таблица StringGrid, пользователем указывается дата поступления на работу (например 11.07.1999).В общем, нужно сделать так чтобы при написании даты в ячейку 5-го столбца, в ячейке 7-го столбца высчитывалась надбавка за стаж по нынешнюю дату, которая складывается с окладом из ячейки 6-го столбца и сумма выводилась в ячейку 8-го столбца. :/
Надбавка за стаж считается следующим образом:
От 5 до 10 лет – 10% от оклада;
От 10 до 20 лет – 15% от оклада;
Свыше 20 лет – 20% от оклада.
Ответить с цитированием
  #2  
Старый 15.11.2014, 01:55
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

YearsBetween + два IF-а и ELSE-а.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 16.11.2014, 12:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А еще можно сделать все это через DbGrid и вычисляемые поля.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 17.11.2014, 11:00
Wandalin Wandalin вне форума
Прохожий
 
Регистрация: 14.11.2014
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Нужен именно StringGrid
Ответить с цитированием
  #5  
Старый 18.11.2014, 02:13
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Wandalin
...пользователем указывается дата поступления на работу (например 11.07.1999).В общем, нужно сделать так чтобы при написании даты в ячейку 5-го столбца, в ячейке 7-го столбца высчитывалась надбавка за стаж по нынешнюю дату, которая складывается с окладом из ячейки 6-го столбца и сумма выводилась в ячейку 8-го столбца. :/...
Код:
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;
Всё это из базы drkb, скачайте её себе кликнув по подписи к этому посту, там много решений всяких и разных. И перевести флажок goEditing в true в StringGrid.Options тоже не забудьте пжлст

З.Ы. Наверное в денежной системе нужно было исчислять оклад, здесь он без "копеек", извиняйте

Последний раз редактировалось Alegun, 18.11.2014 в 07:13. Причина: баг вычисления процентов
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:54.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025