Microsoft Access 掲示板

連続する日付の7番目以降を取り出したい / 5

6 コメント
views
4 フォロー
5
名前なし 2019/06/07 (金) 12:01:33 7f2b8@f966d

基本的な考え方は「7日間だけ抽出する」「連続して7日出勤しているなら7レコードあるはずだ」です。
連続3日ということは「4日前は休み=レコードがない」なのでその日までの7日分だけ抽出したら最大でも6レコードしかないはずで「抽出条件:7」で表示されるのはおかしいとなります。

Dcount関数の条件指定を正せばいいのですが、おかしい原因は

  1. 同じ日付が複数ある
  2. 「出勤」以外の日付のレコードがある
  3. 8日以上離れた日付がある

のどれかです。
そこで、おかしいレコードで「7日間だけ抽出する」して、抽出されたレコードを直接見て原因をつかもうというのが>> 3です。

社員CD7  4月2週目  1、連続3日目なら(月曜から出勤として対象日は4/10日)
社員CDの抽出条件に「7」
日付の抽出条件に「>#2019/04/10#-7 And <=#2019/04/10#」
でクエリを表示すると7レコード以上表示されるはずです。
この場合のSQLを記載しますので、新規にクエリを作成し、SQLビューで以下を張り付けてデータシートビューで確認してみてください。

SELECT [T_出退勤].[社員CD], [T_出退勤].日付
FROM T_出退勤
WHERE ((([T_出退勤].[社員CD])=7) AND (([T_出退勤].日付)>#4/10/2019#-7 And ([T_出退勤].日付)<=#4/10/2019#));

表示されたレコードに「おかしい結果」に該当するものがあった場合はそれを弾く条件の追加が必要です。
「おかしい結果」が無い場合はDcount関数の条件が間違っています。最初の式と同じものを記載しますのでコピーしてみてください。

今日まで7日間の出勤数: DCount("社員CD","T_出退勤","社員CD=" & [社員CD] & " and 日付>#" & [日付]-7 & "# and 日付<=#" & [日付] & "#")
通報 ...