Хочется мне все-таки понять, помогите уже второй день голова
Добавлено: 05 фев 2003, 20:29
работаю с датами
есть две проблемы:
1. Выбираются ненужные месяца из 15 отпусков 3-4 непонятно почему (то ли оформлены отпуска задним числом, то ли еще что-то)из других месяцев
2. нужна выборка по человеку немогу найти как ее в пик засунуть - просто не знаю как.
вот что есть
select * from persons, katpodr, vacations
where ((
1 == vacations.status (noindex)
and D_B <<= vacations.docdate (noindex)
and D_E >>= vacations.docdate (noindex)
and vacations.person /== persons.nrec
and persons.GALDEP /== katpodr.nrec
and vacations.vactype /== klotpusk.nrec
))
order by vacations.docdate;
.begin
RUNDIALOG('GETINTERVAL',D_B,D_E);
// runinterfece (GetPersn)
end.
.fields
vacations.FOUNDATION
vacations.DOCDATE
klotpusk.notpus
persons.fio
katpodr.name
IF (D_B <= vacations.FACTYEARBEG, IF (D_E >= vacations.FACTYEAREND, vacations.DURATION, ((To_Days (D_E)-To_Days (vacations.FACTYEARBEG))+1)), ((To_Days (vacations.FACTYEAREND)-To_Days (D_B))+1))
IF (D_B <= vacations.FACTYEARBEG, IF (D_B >= vacations.FACTYEARBEG, D_B, vacations.FACTYEARBEG), D_B)
IF (D_E >= vacations.FACTYEAREND, IF (D_E <= vacations.FACTYEAREND, D_E, vacations.FACTYEAREND), D_E)
vacations.FACTYEARBEG
vacations.FACTYEAREND
.endfields
есть две проблемы:
1. Выбираются ненужные месяца из 15 отпусков 3-4 непонятно почему (то ли оформлены отпуска задним числом, то ли еще что-то)из других месяцев
2. нужна выборка по человеку немогу найти как ее в пик засунуть - просто не знаю как.
вот что есть
select * from persons, katpodr, vacations
where ((
1 == vacations.status (noindex)
and D_B <<= vacations.docdate (noindex)
and D_E >>= vacations.docdate (noindex)
and vacations.person /== persons.nrec
and persons.GALDEP /== katpodr.nrec
and vacations.vactype /== klotpusk.nrec
))
order by vacations.docdate;
.begin
RUNDIALOG('GETINTERVAL',D_B,D_E);
// runinterfece (GetPersn)
end.
.fields
vacations.FOUNDATION
vacations.DOCDATE
klotpusk.notpus
persons.fio
katpodr.name
IF (D_B <= vacations.FACTYEARBEG, IF (D_E >= vacations.FACTYEAREND, vacations.DURATION, ((To_Days (D_E)-To_Days (vacations.FACTYEARBEG))+1)), ((To_Days (vacations.FACTYEAREND)-To_Days (D_B))+1))
IF (D_B <= vacations.FACTYEARBEG, IF (D_B >= vacations.FACTYEARBEG, D_B, vacations.FACTYEARBEG), D_B)
IF (D_E >= vacations.FACTYEAREND, IF (D_E <= vacations.FACTYEAREND, D_E, vacations.FACTYEAREND), D_E)
vacations.FACTYEARBEG
vacations.FACTYEAREND
.endfields