Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
ник: Кабан дана таблица tb_hdays
hdatefrom hdatetill Коммент 01.05.2009 03.05.2009 09.05.2009 10.05.2009 28.06.2009 29.06.2009
Public Function VDate(dt As Date, Optional turn = 1) As Date Dim dd As Date, dr As Date, dp& On Error Resume Next If Nz(dt, 0) = 0 Then Exit Function '-- праздник? If turn = 1 Then dd = DLookup("[hdatetill]", "tb_hdays", "" & Format(dt, "\#mm\/dd\/yyyy\#") & " between [hdatefrom] and [hdatetill]") Else dd = DLookup("[hdatefrom]", "tb_hdays", "" & Format(dt, "\#mm\/dd\/yyyy\#") & " between [hdatefrom] and [hdatetill]") End If If Nz(dd, 0) <> 0 Then '-- ой, таки праздник! dd = DateAdd("d", 1 * turn, dd) Else dd = dt End If '--выходной? dp = DatePart("w", dd, vbUseSystemDayOfWeek) If dp = 6 Then '--суббота If turn = 1 Then dd = DateAdd("d", 2, dd) Else dd = DateAdd("d", -1, dd) End If ElseIf dp = 7 Then '--воскресенье If turn = 1 Then dd = DateAdd("d", 1, dd) Else dd = DateAdd("d", -2, dd) End If End If '--а вдруг еще?! If turn = 1 Then dr = DLookup("[hdatetill]", "tb_hdays", "" & Format(dd, "\#mm\/dd\/yyyy\#") & " between [hdatefrom] and [hdatetill]") Else dr = DLookup("[hdatefrom]", "tb_hdays", "" & Format(dd, "\#mm\/dd\/yyyy\#") & " between [hdatefrom] and [hdatetill]") End If If Nz(dr, 0) <> 0 Then '-- ой, таки опять праздник! dd = VDate(DateAdd("d", 1 * turn, dr)) End If VDate = dd End Function
SELECT tb_projects.pname, tb_jobs.jname, VDate(DateAdd("d",-[n_a_max],[Создание]),-1) AS СрокиСбор, VDate(DateAdd("d",-[n_c_max],[Проверка]),-1) AS Создание, VDate(DateAdd("d",-[n_4_max],[СдатьВПечать]),-1) AS Проверка, VDate(DateAdd("d",-([n_p_max]),[datefrom])) AS СдатьВПечать, [datefrom] & " - " & [datetill] AS СрокиРассылка, tb_work.pid, tb_work.jid FROM tb_projects INNER JOIN (tb_jobs INNER JOIN tb_work ON tb_jobs.id = tb_work.jid) ON tb_projects.id = tb_work.pid WHERE (((Month([datefrom]))=[Введите номер месяца]) AND ((Month([datetill]))=[Введите номер месяца]));
Ваше имя:
Пароль:
Сообщение:
Прикрепить:
Для вставки смайлов в текст щелкните по значку.