前一阵做一个考勤记录的东东,自己写了三个存储过程,记录如下:
第一个:记录考勤
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DS_Attend]
(@username nvarchar(256),
@action varchar(10))
AS
/**//*功能: 本存储过程实现成员的考勤的记录功能,及考勤时间计算功能。 */
/**//*作者:张玉丰 */
/**//*日期:2007-8-15 */
if @action='in'
begin
insert into Attend(UserName,InTime) values(@UserName,getdate())
update UserInfo set UIsInCenter=1 where UserName=@username
end
if @action='out'
begin
declare @startTime datetime --本次签入时间;
declare @oldTime float --成员累计时长;
set @oldTime=(select UinCenterTime from UserInfo where UserName=@username )
set @startTime=(select InTime from Attend where UserName=@username and IsActive=1)
update UserInfo set UinCenterTime=@oldTime+datediff(minute,@startTime,getdate())
where
UserName=@username
update Attend set OutTime=getdate(),IsActive=0 where UserName=@username and IsActive=1
update UserInfo set UIsInCenter=0 where UserName=@username
end
第二个:计算用户在某时间段内考勤记录的总时长和次数
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: 张玉丰
-- Create date: 2008/8/13
-- Description: 用于实现计算用户在某时间段内考勤记录的总时长和次数
-- =============================================
ALTER PROCEDURE [dbo].[AttendTotal]
(@username nvarchar(256),
@sDate datetime,
@eDate Datetime
)
AS
BEGIN
declare @Aid int
declare @Count int
declare @TotalTime int
declare @ACount int
--
--declare @iTry int
--set @iTry=1
set @TotalTime=0
select * into #zyf_temp from Attend
where (UserName=@username) and
(AttendTime between @sDate and @eDate) and isActive=0
set @Count=(select count(*) from #zyf_temp)
set @ACount=@Count
while (@Count>0)
begin
set @Aid=(select min(Attendid) from #zyf_temp)
set @TotalTime=@TotalTime+(select datediff(minute,(select InTime from #zyf_temp where AttendId=@Aid),(select OutTime from #zyf_temp where AttendId=@Aid)))
delete from #zyf_temp where AttendId=@Aid
set @Count=(select count(*) from #zyf_temp)
end
drop table #zyf_temp
--select @TotalTime as ok,@Aid as AID,@iTry as Try
select @TotalTime as Atime,@ACount as Acount
END
第三个:输出考勤记录排行榜
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: 张玉丰
-- Create date: 2008/8/13
-- Description: 用于输出考勤记录的排行榜
-- =============================================
ALTER PROCEDURE [dbo].[attendListTime]
(
@sDate datetime,
@eDate Datetime
)
AS
BEGIN
declare @Aid int
declare @zCount int
declare @Count int
declare @TotalTime int
declare @ACount int
declare @username nvarchar(256)
SET NOCOUNT ON;
create table #zyf_Show
(
username nvarchar(256),
Atime float,
Acount int
)
select username into #zyf_Name from dbo.aspnet_Users
set @zCount=(select count(*) from #zyf_Name)
while (@zCount>0)
begin
set @username=(select top 1 username from #zyf_Name)
set @TotalTime=0
select * into #zyf_temp from Attend
where (UserName=@username) and
(AttendTime between @sDate and @eDate) and isActive=0
set @Count=(select count(*) from #zyf_temp)
set @ACount=@Count
while (@Count>0)
begin
set @Aid=(select min(Attendid) from #zyf_temp)
set @TotalTime=@TotalTime+(select datediff(minute,(select InTime from #zyf_temp where AttendId=@Aid),(select OutTime from #zyf_temp where AttendId=@Aid)))
delete from #zyf_temp where AttendId=@Aid
set @Count=(select count(*) from #zyf_temp)
end
drop table #zyf_temp
--select @TotalTime as ok,@Aid as AID,@iTry as Try
insert into #zyf_Show(username,Atime,Acount) values(@username,@TotalTime,@ACount)
delete from #zyf_Name where username=@username
set @zCount=@zCount-1
end
select * from #zyf_Show order by Atime desc
drop table #zyf_Show
drop table #zyf_Name
END
分享到:
相关推荐
C++程序可以设计一个考勤类,存储每日的出勤记录,通过时间戳和状态来管理。系统需能够读取考勤设备(如刷卡机)的数据,或者允许员工手动输入。同时,为了分析出勤情况,可能需要统计功能,如计算月度出勤天数、...
在三层架构中,主要分为以下三个层次: 1. 表现层(Presentation Layer):这是用户与系统交互的界面,通常包括ASP.NET网页和用户控件。在考勤管理系统中,这一层负责展示数据、接收用户输入,并将用户的操作转发给...
本文详细介绍了使用Java语言与中控考勤机进行交互的过程,包括连接考勤机、下载用户信息及指纹信息,并最终更新至人力资源系统的数据库。通过对这些代码的理解和应用,可以极大地提高考勤管理的效率和准确性。此外,...
"SQL学生考勤管理系统" 本文总结了一个基于SQL的学生考勤管理...本文总结了一个基于SQL的学生考勤管理系统的设计和实现,该系统旨在实现学生考勤的标准化和自动化,通过数据库设计和实现来满足学校的考勤管理需求。
此过程分为几个关键步骤,包括连接考勤机、读取一般日志数据、读取最新日志数据以及解析这些数据。 ### 一、连接考勤机 在进行任何数据读取之前,首先需要建立与考勤机的连接。在提供的代码片段中,`connect`方法...
《基于JAVA的考勤系统详解》 在信息技术日益发达的今天,企业对于高效、精确的考勤管理需求越来越大。基于JAVA开发的考勤系统,以其强大的功能和灵活的拓展性,成为了众多企业的首选。本文将深入探讨这个系统的实现...
它通过实体(Entity)、属性(Attribute)和联系(Relationship)三个基本要素来表示数据结构。其中: - **实体**:是指现实世界中可以相互区别的事物或概念,例如员工、部门等; - **属性**:是对实体特征的描述,如员工...
《考勤管理系统的设计与实现——基于DELPHI的初学者指南》 在信息化时代,企业的日常管理离不开各种软件系统的支持,...同时,欢迎大家提出宝贵意见,共同完善这个考勤管理系统,使其更加贴近实际需求,提升用户体验。
一个完整的人事考勤工资系统不仅需要满足上述功能,还需要具备良好的兼容性和可扩展性,以便与其他业务系统(如CRM、ERP)集成,实现企业内部信息的无缝流转。同时,系统的安全性、稳定性和易用性也是关键考虑因素。...
在考勤管理系统中,可能会创建视图以简化复杂的查询,或者使用存储过程来封装常用的操作逻辑。 三、数据处理 数据处理主要包括数据的录入、更新和查询。系统需要能够自动处理打卡时间,计算迟到、早退、缺勤等情况...
7. **图表展示**:可引入第三方库如MPAndroidChart,用于生成考勤数据的柱状图、饼图等图表。 8. **数据同步与备份**:考虑云同步功能,如使用Firebase或其他云服务,实现考勤数据在多设备间的同步。 开发过程中,...
Java 学生考勤管理系统的架构主要分为三大模块:信息管理模块、考勤管理模块和考勤系统模块。信息管理模块负责管理师生个人信息,包括基本信息、课程信息、成绩信息等。考勤管理模块负责管理学生的考勤信息,包括...
总之,JavaSSH2考勤系统利用Java的三大框架和MySQL数据库构建了一个完整的考勤管理平台,为企业提供了一套便捷、高效的考勤解决方案。无论是从系统架构设计、数据库管理,还是到具体功能的实现,都充分体现了Java...
1. 学生类(Student):此类包含学生的基本信息,如姓名、学号等,并可能有一个成员变量来存储该学生的考勤记录。 2. 考勤记录类(AttendanceRecord):用于存储单次考勤的日期、状态(出席、缺席、迟到等)。 3. ...
在学生考勤系统中,RFID被用于简化和优化考勤过程。系统功能包括但不限于:记录学生的进出时间,实时更新考勤信息,生成考勤报表,以及对学生信息的管理等。系统可以划分为几个功能模块,如学生管理、考勤管理、系统...
C#考勤管理系统通常采用三层架构设计:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。表示层负责用户交互,业务逻辑层处理业务规则,数据访问层则与数据库...
系统需确保指纹信息在传输、存储和比对过程中的安全,防止未经授权的访问和滥用。同时,应遵守相关法律法规,保护员工的隐私权。 总之,指纹考勤管理系统结合了现代生物识别技术和软件工程,实现了高效、准确的员工...
【大学生课堂考勤系统】是一个综合性的信息技术应用,主要用于高校教学管理,利用现代技术手段提升课堂教学的效率和准确性。此系统结合了Android移动设备、PHP服务器端编程以及MySQL数据库技术,构建了一个完整的...
2. 数据结构与算法:通过数组或集合类存储员工信息和考勤记录,使用排序算法优化数据检索效率。 3. 文件操作:使用File类进行文件的创建、删除和重命名,保证考勤数据的完整保存。 4. 异常处理:利用try-catch-...
1. 数据库设计:一个完整的考勤系统需要一个数据库来存储员工信息、考勤记录等数据。在C#中,我们可以使用ADO.NET框架与SQL Server等数据库进行交互,实现数据的增删改查操作。 2. 用户界面:利用C#的Windows Forms...