「出席管理システム」というプロジェクトをやっています
同社には、従業員の出席をチェックしてデータベーステーブルに保存する独自の生体認証フィンガースキャナーがあります。
テーブルは4つのフィールドで構成されています(ID autonumber, EmployeeNo, CheckTime and CheckType)
計時システムは、すべての従業員のログと出席を保存しますが、チェックタイプが「I」か「O」かを指定しません。下の画像を見るとわかるように、従業員がログインするたびに、システムはそれをデータベースに自動的に保存しますが、「I」として保存され、同じ従業員が再度ログインすると、再び「I」として保存されます。
私のクライアントはそれを可能な限り自動化することを望んでいます。彼は、従業員が再度ログインしたら、チェックタイプを「O」に変更したいと考えています。
例えば:
私は従業員です。今日の午前8時にログインすると、データベースに次のように保存されます。
今日の午前8時、チェックタイプは「I」です。すでにログインしていることに気付いていないため、午前8時4分に2回目のログインを繰り返しました。システムは、Iと同じように「I」として再度ログインします。午後5時にログアウトする場合、システムはそれを「I」として記録します。
データベースを自動的に更新したいのですが、ユーザーからのパラメーターなしで。プロセスを自動化するために、ストアドプロシージャに含める必要があります。
同じ従業員内で制限する必要があります。例:
Employee1は今日の午前8時にログインしました。(チェックタイプ "I")Employee1は今日の午前11時に再度ログインしました...(チェックタイプ "O")employee1は今日の午後12時に再度ログインしました。(チェックタイプ "I")employee1は今日の午後4時に再度ログインしました(チェックタイプ「O」)
基準はemployeeno、checktimeのみに制限する必要があります。また、指定されたデータに基づいてchecktypeを更新したいと考えています。
古いシステムでは、ログインしたログインを「O」として保存することはできません。純粋に「I」でした。
これを行う方法?私はあなたの入力が必要で、ひどく助けます!お願いします?
ストアドプロシージャを作成しましたが、どこから開始できるかわかりません。また、プロシージャを終了して機能させることもできません。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE AUTOMATIC_OVERRIDE
@ID INT,
@EMPLOYEENO NVARCHAR(20),
@CHECKTIME DATETIME,
@CHECKTYPE NVARCHAR(1)
AS
SET NOCOUNT ON;
WHILE @ID = (SELECT ID FROM CHECKTIME)
SELECT ID,EMPLOYEENO,CHECKTIME,CHECKTYPE
FROM CHECKTIME
GROUP BY ID,EMPLOYEENO,CHECKTIME,CHECKTYPE
ORDER BY CHECKTIME
GO
この問題を解決するのを手伝ってください。ありがとう。