`

最近写的三个关于考勤的存储过程

    博客分类:
  • SQL
Go 
阅读更多

前一阵做一个考勤记录的东东,自己写了三个存储过程,记录如下:

第一个:记录考勤

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

 

分享到:
评论

相关推荐

    双鱼林考勤信息管理系统免费学习版

    (3)系统在进行相关操作如删除员工信息时使用了存储过程。 数据库文件:DB_51aspx目录下的AttendanceDB_Data.MDF,自己在sqlserver2000数据库中导入即可 Sqlserver数据库登陆信息: 帐号sa,密码sa(自己可以在Web....

    基于Java的校园课堂考勤系统的设计与实现

    随着互联网技术的不断发展和计算机性能的不断提升,用户享受互联网的方式也开始不断...通过对校园课堂考勤系统开发过程的介绍,可以了解到一个考勤应用的开发过程。 关键词:数据库 Java 校园课堂考勤 超文本标记语言

    数据库课程设计-考勤信息管理系统

    自己做的 一个 考勤信息管理系统 第一章 可行性分析 1 1.1 引言 1 1.1.1 编写目的 1 1.1.2 项目背景 1 1.2 可行性研究的前提 2 1.2.1 要求及目标 2 1.2.2 条件假定和限制 3 1.3 技术可行性分析 3 1.3.1 技术的支持...

    GTC93/50考勤机485方式接口程序

    GTC930/50考勤机485方式接口程序 用于GTC930/50考勤机485方式接口程序 系统特点: (1)数据传输速度:20000条/分钟 (2)可直接驱动电锁、三辊闸、自动门、警示灯、蜂鸣器及其他12V信号源 (3)外接电铃,20个打...

    基于uniapp+springboot声纹考勤系统app设计+sql数据库(毕设源码).zip

    这个考勤系统不同于传统的考勤系统,可以实现对接讯飞开放平台,其中的声纹识别api文档地址:https://www.xfyun.cn/doc/voiceservice/isv/API.html#接口调用流程,实现语音声纹的录入注册和查询对比。手机端接口都在...

    基于opencv+dilb的员工人脸识别考勤系统

    基于 Opencv、dlib、wxPython 人脸识别的员工考勤系统 IDE:Pycharm 环境:Python 3.5+ 第三方包:pip install -r requirements.txt 打开摄像头时请左右晃动一下人脸,确保人脸识别开始. 人脸识别时做了拒绝处理,...

    基于嵌入式opencv人脸识别考勤系统-毕业设计

    三、项目功能描述:系统时刻显示当前时间并通过数据库存储公司员工的人脸和个人基本信息,实现一个公司中的员工通过人脸识别进行上下班打卡,并且记录员工的上下班时间的功能。系统管理员可以通过刷卡查看员工信息和...

    基于uniapp+springboot实现的声纹考勤系统app设计毕业源代码+文档说明+sql文件

    这个考勤系统不同于传统的考勤系统,可以实现对接讯飞开放平台,其中的声纹识别api文档地址:https://www.xfyun.cn/doc/voiceservice/isv/API.html#接口调用流程,实现语音声纹的录入注册和查询对比。手机端接口都在...

    射频识别课程设计报告

    学生考勤对加强教学管理,促进教学改革有着非常重要的意义。目前学生考勤管理都是以任课老师上课点名,记录学生上课情况。...软件大体分为:学生、教师、管理员三个模块,主要实现考勤及考勤情况的相应查询操作。

    基于三层架构开发的ASP.NET校园考勤系统.zip

    包括权限管理,Excel文件的导入导出,批量数据存储数据库,验证码,XML,LayUI,根据数据生成图表,session,cookis等技术 C# + SQL Server 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息...

    基于SpringBoot+thymeleaf实现的蓝天幼儿园管理系统

    1、系统共有管理员、老师、家长三个角色,管理员拥有系统最高权限。 2、页面列表 基于SpringBoot+thymeleaf实现的蓝天幼儿园管理系统 运行环境 jdk8+mysql5.7+IntelliJ IDEA+maven 项目技术(必填) 服务端:...

    Java基于SSM(Spring+SpringMVC+MyBatis)公司员工考勤管理系统.zip

    Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来...

    Java基于SSM(Spring+SpringMVC+MyBatis)数据结构课堂考勤管理系统.zip

    Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来...

    Java基于SSM(Spring+SpringMVC+MyBatis)数据结构课堂学生考勤管理系统.zip

    Mybatis框架是一个基于ORM的持久化框架,Mybatis框架不是一个完整的ORM实现,而是半自动化的ORM实现。Mybatis框架的主要特点是SQL映射器机制 持久化:就是将内存中有用的数据以某种技术保存起来,并且可以再次取出来...

    使用SB rfid HAT的基于Raspberry Pi的考勤系统-电路方案

    登录后,可以使用以下三个选项: 1)添加:单击此按钮添加新用户,然后在rfid阅读器前面显示您的rfid标签/卡。检测后,您可以在卡字段中看到您的卡号。现在在扫描卡的名称字段中输入名称,然后单击添加按钮将其添加。...

    企业人事管理系统

    总结程序开发过程中系统函数、存储过程、触发器等后台数据库对象在开发过程中的调用情况;设计中遇到的问题,设计的心得体会. 6、 可以自行组成小组,每个小组人数不超过3个。每个小组必须提交的系统功能必须完备;...

    springboot基于物联网技术应用的智能社区应用系统010110(附源码+数据库)

    后台:后台一共有三个模块,每个模块都有属于自己的功能,例如有用户模块,菜单模块、社区考勤信息模块等 (2)数据库表 数据库表设计是在前面工作基础上完成的,需要将实体数据用计算机能明白的方式存储起来。例如...

    人力资源管理系统数据库设计与实现.doc

    2、工作经历 图三 员工历史工作经历信息存储信息 分析说明:该工作经历信息中涉及了三个实体,即员工实体、员工单位信息实体和 员工工作经历实体。因上述已分析员工实体和员工单位信息实体,此处只分析员工工作 ...

    i团队 v1.0.1.zip

    包含移动oa、移动crm、企业微信三个模块,用云计算技术研发出完美的移动办公解决方案。需要的朋友快来下载吧! i团队功能特色 手机打卡 人力设考勤,人力部门预设考勤地点,支持分公司多地考勤 打卡防作弊,员工...

    java人事管理系统毕业论文精编版.pdf

    要分为三个模块,员工信息管理,考勤信息管理,工资信息管理三个模块。其中 员工信息管理包括了员工基本信息的增删改查,主要用于对公司员工的入职,离 职,辞退等管理。员工考勤管理包括了员工的请假,休假,迟到等...

Global site tag (gtag.js) - Google Analytics