プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。

うまく説明できませんが以下のデータがありますが、
ID 日付 社員ID 開始 終了  時間 残業
1 12/1 001   8:00 17:00  8
2 12/2 001   17:00 20:00  3

本当は下のように作りたいです。
ID 日付 社員ID 開始 終了  時間 残業
1 12/1 001   8:00 17:00  8
2 12/2 001   17:00 20:00     3

ですのでSQLでつくってみました
SQL = ("SELECT T_作業日報明細.日付, T_作業日報明細.個人ID,Min(T_作業日報明細.[Start Time]) AS [Start Timeの最小], Max(T_作業日報明細.[End Time]) AS [End Timeの最大], Sum(T_作業日報明細.時間) AS 時間の合計" & "FROM T_作業日報明細" & "GROUP BY T_作業日報明細.日付, T_作業日報明細.個人ID;")

ですが以下のコードはVBAでどいう風に書けばいいか分かりません。
もし日付と社員IDが同じなら
時間の合計 = EndTimeの最大 - StartTimeの最小 - Me.休憩

If 時間の合計 <= 8 Then
Me.残業 = 0
Me.勤務時間 = 時間の合計
Else
Me.残業 = 時間の合計 - 8
Me.勤務時間 = 8
End If
そうではない場合
Soukinmu = EndTime - StartTime - Me.休憩
If Soukinmu <= 8 Then
Me.残業 = 0
Me.勤務時間 = Soukinmu
Else
Me.残業 = Soukinmu - 8
Me.勤務時間 = 8
End If

めちゃくちゃだと思いますがご指導をよろしくお願い致します。

A 回答 (2件)

出退管理はテーブル的には


社員テーブル(ID、氏名、、、、、)
打刻テーブル(ID、日付、時間、出退区分、、、)
出勤区分テーブル(ID、名称、、、)休日、有給、祝日、などが入っている。
勤務区分(ID、勤務区分名、開始時間、就業時間、休憩時間、総労働時間、、、)
個別スケジュール(社員ID、年月日、出勤区分、勤務区分、出勤時間、退勤時間、総労働時間、休憩時間、残業時間、遅刻時間、早退時間、時間調整、、、)
年休管理テーブル(社員ID、年、有給付与数、繰越数、休日数、祝日数、有給消化数、、、)


みたいなかんじかな。 他社の製品なんであまり詳しくは書くわけにはいかないけど、個別スケジュールを月次のバッチ処理である程度データを埋めるところが肝だね。 あとは、労働時間とかを集計するテーブルもあるし、給与体系に結び付けているテーブルもあるし、やろうとすると、いくらでもできるけど、、、

結局、最終的には何をどう管理するために、どの程度の手間とコストをかけるのか?
それを社内でやるのと、製品を買うのとどちらがリーズナブルなのか?
という話になってくるわけだね。

休憩時間別にというのは、8時5時、9時6時、10時7時などという出勤区分をそれぞれ作って対応したという意味。
    • good
    • 0

うちの勤怠ソフトは、


出勤休日祝日区分と、勤務時間帯コードを入れるところが付いているよ。
さらに総労働時間と残業時間は別なフィールドで双方データが必ず入ることになっているよ。
で、別テーブルに勤務時間帯コードの標準出勤時間、標準退勤時間、標準休憩時間、標準総労働時間が入れてあって、計算しているみたいだよ。 ま、フレックスにも対応しているんだけど、いろいろめんどくさかったから、休憩時間別にに勤務時間帯コードを作ることにしたよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まずテーブルを再設計する必要があると分かってきました。
単純な質問ですみませんが出勤休日祝日区分と休憩時間別テーブルにはどんなフィールドでしょうか?
お手数ですが、よろしくお願い致します。

お礼日時:2012/01/11 09:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す