C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как вычесть праздничные даты?
SASH
  Отправлено: 07.10.2003, 13:18


Дежурный стрелочник

Группа: Участник
Сообщений: 58



Есть база.
В ней есть поля "ночало отпуска" и "дата окончания отпуска".
Скажите пожалуйста, как из периода отпуска вычесть праздничные даты???
Например, если отпуск с 6 января(ночало отпуска) по 1 февраля(дата окончания отпуска). Встречается праздник 7 января. Если отпуск с 1 мая по 23 мая. Встречаетс 1, 2, 9 мая.
Admin
Отправлено: 07.10.2003, 21:12


Владимир

Группа: Администратор
Сообщений: 1190



Наверное завести массив праздничных дней и
проверять на наличие даты в массиве.

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
// DTP1,DTP2 — компоненты TDateTimePicker

struct PD{
int day;
int month;
};

PD pd[4];

pd[0].day = 7; pd[0].month = 1;
pd[1].day = 1; pd[1].month = 5;
pd[2].day = 2; pd[2].month = 5;
pd[3].day = 9; pd[3].month = 5;

int count=0;
TDate dt;

for(dt=DTP1->Date; dt < DTP2->Date; dt++){
unsigned short day,month,year;
DecodeDate(dt,year, month,day);
for(int j=0; j<4; j++){
if(pd[j].day == day && pd[j].month == month) { count++; break; }
}
}

Label1->Caption = "Праздничных дней найдено: "+IntToStr(count);

}
//----------------------------------------------


Отредактировано Admin — 07/10/2003, 22:17
SASH
Отправлено: 09.10.2003, 06:46


Дежурный стрелочник

Группа: Участник
Сообщений: 58



Большое спасибо Admin.
Admin
Отправлено: 09.10.2003, 12:37


Владимир

Группа: Администратор
Сообщений: 1190



Да, а если у вас есть база, то может имеет смысл
завести в ней таблицу с 2-мя полями для
праздничных дней (они хоть редко, но могут меняться,
а если эти дни жестко прописаны в .exe — может получиться
не очень хорошо)

Tbl_Holidays
---------------
int HDay
int HMonth

и помещять праздничные дни туда.
А потом также доставать их оттуда и проверять.

Вернуться в Работа с базами данных в C++Builder