0

employeeno、、checktimeおよびに基づいて行を更新するストアドプロシージャを作成するのに問題がありidます。

これが私のテーブルです:

ここに画像の説明を入力してください

従業員の出席システムを作成しています。CheckType基本的に、時間を追跡してデータベースに保存するための生体認証フィンガースキャンデバイスがありますが、列に示されているように、チェックアウトではチェックインしかできなかったため、デバイスは時間を保存できませんでした。

今私がしたいのは、Checktype列をからIに変更することですO

例 :

従業員465-04-01が午前7時46分にログインした場合は、次のように記録する必要がありますI。同じ従業員が同じ日の午前7時47分に再度ログインしようとした場合は、O現在として記録する必要があります。employeeno, idこれは自動番号を含める必要があります。レコードを更新するための基礎になるためです。

従業員がその同じ日の午後4時にログインした場合Iは、次のログインが同じ日に行われるように記録する必要がありますO

手伝ってくれませんか?これに関して十分な経験がないので、これを行うストアドプロシージャが必要です。助けてください!

4

1 に答える 1

1

従業員がログインするたびに、現在時刻より前の CHECKTIME を確認します

SP でこのタイプのクエリを使用する

    IF((SELECT(SELECT * FROM TBL_NAME
    WHERE CHECKTIME < CURRENT_TIMESTAMP and CHECKTIME > (select CONVERT(date,CURRENT_TIMESTAMP)))%2)=0)
    BEGIN
    --//HERE WRITE YOUR CODE SETTING CHECKTYPE AS 1 (EMPLOYEE ENTER)
    END
    ELSE
    BEGIN
    --//HERE WRITE YOUR CODE SETTING CHECKTYPE AS 0 (EMPLOYEE EXIT)
    END

記録された回数が偶数または奇数であるかどうかをチェックします。カウントが偶数の場合、次のように返します1。これは、従業員が入力したことを意味します。Else カウントが Odd の場合、次のように返します0。これは、従業員が終了したことを意味します。(ここで 0 は偶数です)

1は、値が最初に入力されたとき (3 回目、5 回目、7 回目、... 回のときも) になり0、値が 2 回目に入力されたとき (4 回目、6 回目、8 回目、... 回も) になります。

于 2012-08-25T06:06:39.643 に答える