0

システム内の従業員の正確なログイン時間をキャプチャするために vb6 でコーディングするにはどうすればよいですか。

私のシステムは毎日の時間記録です。各従業員には次のようなログインスケジュールがあります

午前 8:00 - TimeinAM、
12:00PM - タイムアウト、
午後 1:00 - 時間INPM、
午後5:00 タイムアウト午後

従業員のすべての時間を取得し、ログイン時間とログイン スケジュールに基づいて遅刻と残業時間を計算したいと考えています。

私は、すべてのセッションで複数のログインを行う従業員を非常に懸念しています。TimeinAM、TimeOutAM、TimeinPM、またはtimeoutPMに属しているかどうかを知るにはどうすればよいですか。

私のテーブルの構造は、すべてのセッションにこれらの追加の BreakTime フィールドがあります。これがどのように見えるかです:

従業員 ID | タイムインアム | ブレイクアウト AM | ブレイクインAM | タイムアウト | TimeInPM | ブレイクアウトPM | BreakInPM TimeOutPM | 遅い | アンダータイム | 日付 |

sql は私のデータベースです。

誰でも私を助けることができます、私はとてもうれしいです. 私はこれを1か月間取り組んでいます。

シナリオ例

EmpID=0001
Date=08-13-2013
8:00am - TimeinAM,
12:00PM - TimeOUtAM,
1:00PM - TimeINPM,
5:00pm timeoutpm

この日、彼は午前のセッションに 2 回ログインしました

7:57:23 AM
7:58:10 AM //It happens when he thinks he didn't login. so he time in again

彼は午前中にログアウトします

12:03:01 pm

彼は午後にログインします

01:03:05 PM

そして彼は午後にログアウトします

05:12:27 PM

この次のシナリオでは、従業員は午前セッションで複数のログインを持っています。これは、彼が取引のために社外に出たときに発生します。午前中の時間外として記録する必要があります。例は次のとおりです。

朝、彼はログインします

7:50:12 AM

それから彼は

10:30:02 AM

そして彼は戻ってきます

11:02:01 AM

そして彼はログアウトします

12:02:01 PM

午後のセッションでは、従業員の通常のログインが行われます

彼はログインします

01:05:01 PM

でログアウトします

5:04:10 PM

これは発生する可能性のあるシナリオの一部です。私の例がクリアされていない場合はコメントしてください。

注: が TimeInAM、TimeOutAM、TimeInPM、または TimeOutPM に属していると判断したのは私だけです。私の唯一のデータは、毎日のすべての従業員のログインのリストです。

4

1 に答える 1

1

あなたがやろうとしていることをすべて理解しているかどうかはわかりませんが、ここではビジネスルールが便利なようです: たとえば、15 分のタイムスパンのすべてのブロックで最初のクロックのみを取得する場合は、それらを削除します。出勤かどうか」のケース。

次に、出勤/出勤を理由に関連付ける必要があります-あなたの例から私は見るでしょう:

  • 一日の始まり+終わり
  • 休憩開始+休憩終了
  • オフサイトの開始+終了

そのようなことを行う私が見たすべてのシステムには、「管理者」が時計を手動で上書きする方法があるため、欠落している終業時間の時計を修正できます。

消費しているデータに理由を組み込むことができない場合は、それを判断できるビジネス ルールが必要になると思いbreakます。最初のクロックの後、昼休みの前であれば、それは; ユーザーが午後 4 時 30 分以降に退勤した場合はであり、それより前で、ユーザーが昼食から退勤した後に退勤した場合は、再び になります。offsitebreakoffsiteEndOfDayoffsite

撮影しているテーブル構造では、従業員/日付ごとに、出勤/退勤するたびにレコードを更新する必要があります。

適切なレコードを取得して更新するためのコードが必要です。時刻を書き込むフィールドを決定するコードが必要になります。そのコードは、時刻を取得し、ビジネス ルールを検証してフィールドを決定する関数である可能性がありますPublic Function GetFieldNameForClockTime(ClockTime As Date) As String

于 2013-08-13T02:21:39.293 に答える