Внесение расписаний для расчетов доступа

Я действительно не знаю, как задать этот вопрос или назвать его, но вот я иду. Я работаю в системе школьного образования и создал базу данных, которую некоторые психологи могут использовать для отслеживания своих рекомендаций. По правилам штата у них есть 60 дней с даты их первой встречи, чтобы завершить процесс. Выходные по-прежнему считаются, а ПРАЗДНИКИ — НЕТ. Я действительно не знаю, как использовать календарь, который у нас есть, чтобы у нас был точный расчет. Например, с учетом праздников, если ребенок начал работу сегодня, ему нужно будет закончить все 18 января 2013 г. То есть через 60 дней, исходя из нашего графика. Кто-нибудь знает, с чего мне начать?

Редактировать

Итак, теперь у меня есть таблица календаря. Вот моя проблема. У меня есть столбец, который я использовал, чтобы указать, какие дни используются при расчете моих 60 дней. Выходные дни могут быть использованы в этом расчете. ОДНАКО, они не могут быть использованы в результате. Если 60-й день выпадает на воскресенье или субботу, то дата должна перейти на предыдущую пятницу. Я предполагаю, что моя первая проблема на самом деле заключается в том, как мне ограничить свои вычисления датами в моей таблице календаря?


person Chris Jones    schedule 25.10.2012    source источник
comment
Рассматривали ли вы таблицу календаря « title = «как автоматически вставлять ежемесячные записи в таблицу через sql»> stackoverflow.com/questions/12263492/? Где хранятся ваши праздники?   -  person Fionnuala    schedule 25.10.2012
comment
У меня пока ничего не хранится. Я немного поработал с базами данных, но только начинаю вникать в такие мелкие детали, как эта.   -  person Chris Jones    schedule 25.10.2012
comment
Таблицы календаря действительно очень полезны в любой базе данных, которая нуждается в планировании. Они не занимают много места.   -  person Fionnuala    schedule 25.10.2012
comment
Хорошо, похоже, мне нужно узнать о таблицах Caldender. Они не кажутся слишком тяжелыми.   -  person Chris Jones    schedule 25.10.2012
comment
Итак, у меня есть стол с календарем, это совсем не сложно. Теперь моя проблема заключается в том, как мне рассчитать ТОЛЬКО на основе дней, перечисленных в этом календаре, а также ограничить мой вывод датами в этом календаре?   -  person Chris Jones    schedule 25.10.2012


Ответы (2)


Вы можете проверить день недели, чтобы убедиться, что вы не выбрали выходной:

SELECT TOP 1 CalDate, WDay 
FROM (SELECT Top 60 c.CalDate,Weekday([Caldate]) AS WDay
      FROM Calendar c
      WHERE c.Holiday=False) a
WHERE WDay Not In (1,7)
ORDER BY CalDate DESC
person Fionnuala    schedule 25.10.2012
comment
На самом деле у меня есть календарь, в котором выходные и праздничные дни исключены. На данный момент мне просто нужно знать, как я могу выполнить расчет на основе этих дней, а не того, что обычно делал бы доступ, если бы я сказал ему делать (дата + 60) - person Chris Jones; 25.10.2012

Это может быть легко с таблицей календаря.

PARAMETERS start_date DateTime;
SELECT TOP 1 sub.the_date
FROM
    (
        SELECT TOP 60 the_date
        FROM tblCalendar
        WHERE
                the_date>=[start_date]
            AND work_day=True
        ORDER BY the_date
    ) AS sub
ORDER BY sub.the_date DESC;

Этот запрос основан на предположении, что вы установили work_day в True для дат, которые вы хотите оценить. IOW, work_day будет False только в праздничные дни вашей организации.

Пример кода для создания и загрузки таблицы календаря см. в процедурах CreateTable_calendar() и LoadCalendar() на странице Использование даты начала и даты окончания в запросе доступа. Чтобы первоначально назначить все даты, включая выходные дни, рабочими днями, внесите это изменение в LoadCalendar().

'rs!work_day = Not (Weekday(dte) = vbSunday Or _
'    Weekday(dte) = vbSaturday)
rs!work_day = True

Наконец, вручную отредактируйте таблицу, чтобы изменить work_day на False для ваших праздников.

person HansUp    schedule 25.10.2012
comment
Хорошо... так что я не совсем уверен, куда это поместить, если честно. Чем больше я работал над этим, тем лучше я хотел бы задать свой вопрос. На самом деле мне нужно будет использовать выходные для моих расчетов, но их нельзя использовать в моем ответе. Например, если срок выполнения приходится на выходные, то его нужно будет перенести на предыдущую пятницу. - person Chris Jones; 25.10.2012