我做了一个签到系统!
CREATE TABLE [HRDT_QDTable] (
[UserID] [int] NOT NULL ,
[UserName] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[QDDateTime] [datetime] NOT NULL CONSTRAINT [DF_HRDT_QDTable_QDDateTime] DEFAULT (getdate()),
[IsLater] [smallint] NULL CONSTRAINT [DF_HRDT_QDTable_IsLater] DEFAULT (0)
) ON [PRIMARY]
GO
数据为:
UserID IsLater
----------- ------------ -------
18 2003.09.08 0
12 2003.09.08 0
11 2003.09.08 0
19 2003.09.08 0
20 2003.09.08 0
7 2003.09.08 0
8 2003.09.08 0
13 2003.09.08 0
2 2003.09.08 0
14 2003.09.08 0
4 2003.09.08 0
6 2003.09.08 1
5 2003.09.08 1
20 2003.09.09 0
19 2003.09.09 0
18 2003.09.09 0
12 2003.09.09 0
11 2003.09.09 0
8 2003.09.09 0
7 2003.09.09 0
6 2003.09.09 0
13 2003.09.09 0
14 2003.09.09 0
2 2003.09.09 0
4 2003.09.09 1
5 2003.09.09 1
16 2003.09.09 1
3 2003.09.10 0
12 2003.09.10 0
20 2003.09.10 0
18 2003.09.10 0
11 2003.09.10 0
8 2003.09.10 0
7 2003.09.10 0
9 2003.09.10 0
19 2003.09.10 0
10 2003.09.10 0
16 2003.09.10 0
14 2003.09.10 0
2 2003.09.10 0
5 2003.09.10 1
17 2003.09.10 0
1 2003.09.10 1
9 2003.09.11 0
20 2003.09.11 0
12 2003.09.11 0
18 2003.09.11 0
19 2003.09.11 0
但是在使用的过程在,如果迟到了:则置IsLater=1,但是如果这个人一天没有来,该怎么办呀?
问题:
1。如何能在某一下时刻由系统自动插入该人“未到”的标志![Islater=2]
2。如何用select 语句找到某一天未到人的 UserID。
3。由于公司要求每人到公司后必须打开本系统!如何定时的更新OnLine.Xml文件,以确定打开系统的人数!(最好能用Asp+存储过程实现,不用客户端的reflash)
1. 创建一个作业,每天执行一次,检查每天都有谁没有来
update HRDT_QDTable
set Islater = 2
where UserID in (
select userid from user where userid not in (
select userid from HRDT_QDTable
where datediff(day, QDDateTime, getdate()) = 0
)
)
2.
select userid from user where userid not in (
select userid from HRDT_QDTable
where datediff(day, QDDateTime, getdate()) = 0
1、建议你将正常签到标志设为1,迟到设为2,不到设为3,初始化标志为0
2、编写存储过程,每天凌晨,在签到表里自动添加所有人员
签到记录 , 记录所有人员的签到情况为0 ,
2、在计划任务里编写存储过程,定时调用,判断签到情况,签到时间已到,
直接update 人员签到情况为3,如果人员来了以后,他会签到,更改为2
统计一个人那一天没有到:
Select Distinct QDDatetime from HRDT_QDTable
where QDDatetime not in (select QDDatetime from HRDT_QDTable where userID = @userID )
1.作业不是操作系统的,但它的功能相当于Window的计划任务
如果你自己写个VBS调度存储过程也行
2.如果服务器不是24x7的运行的话,那你每天提早半个小时来,
调用写好的的存储过程,okey
3.niukl(小牛)也可以让系统自动在今天有天的时候签到明天所有人的签到(设初始化标志为0)是吧!
不一定要这样,统计完后在使用一次左或右联接,即可
Select Distinct convert(varchar(10),QDDatetime,120) from HRDT_QDTable
where convert(varchar(10),QDDatetime,120) not in (select convert(varchar(10),QDDatetime,120) from HRDT_QDTable where userID = @userID )
人员表和签到表的左连接就可以得到未签到的人,
你可以专门建一个人没签到明细表,标记每个人每天的情况.