2

この質問をする方法やタイトルを付ける方法は本当にわかりませんが、ここに行きます。私は学校のシステムで働いており、一部の心理学者が紹介を追跡するために使用するデータベースを作成しました。州の規則により、彼らは最初の会議の日から60日以内にプロセスを終了します。週末はまだカウントされますが、休日はカウントされません。正確な計算ができるように、カレンダーの使い方がよくわかりません。たとえば、休日を考慮して、子供が今日開始された場合、彼はすべてを2013年1月18日に終了する必要があります。これは私たちのスケジュールに基づいて今から60日後です。誰かが私がどこから始めるべきか考えていますか?

編集

さて、これでカレンダーテーブルができました。これが私の問題です。60日を計算する際に使用される日を示すために使用した列があります。その計算では週末を使用できます。ただし、結果に使用することはできません。60日目が日曜日または土曜日の場合、日付は前の金曜日に移動する必要があります。私の最初の問題は本当に、計算をカレンダーテーブルの日付に制限するにはどうすればよいですか?

4

2 に答える 2

1

これは、カレンダーテーブルを使用すると簡単にできます。

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した仮定に基づいています。TrueIOWは、組織の休日にのみ使用されますwork_dayFalse

カレンダテーブルを作成およびロードするためのサンプルコードについては、Accessクエリでの開始日と終了日の使用CreateTable_calendar()のおよびLoadCalendar()手順を参照してください。最初に週末を含むすべての日付を就業日として割り当てるには、でこの変更を行います。LoadCalendar()

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

最後に、テーブルを手動で編集して、休日に変更work_dayします。False

于 2012-10-25T17:25:24.067 に答える
0

平日をチェックして、週末を選択していないことを確認できます。

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
于 2012-10-25T19:26:41.983 に答える