📄 uu1.pas.~2~
字号:
adoQury.SQL.Add(' dbo.部门表2.部门名 AS 部门名2, dbo.部门表1.部门名 AS 部门名1');
adoQury.SQL.Add(' FROM dbo.人员表 LEFT OUTER JOIN');
adoQury.SQL.Add(' dbo.部门表1 ON dbo.人员表.部门1 = dbo.部门表1.部门ID LEFT OUTER JOIN');
adoQury.SQL.Add(' dbo.部门表2 ON dbo.人员表.部门2 = dbo.部门表2.部门ID LEFT OUTER JOIN');
adoQury.SQL.Add(' dbo.部门表3 ON dbo.人员表.部门3 = dbo.部门表3.部门ID');
adoQury.ExecSQL;
}
adoQury.SQL.Clear;
adoQury.SQL.Add('CREATE Procedure wpgSomeTh');
adoQury.SQL.Add('AS');
adoQury.SQL.Add(' select 采区ID as iID,采区名 as sName,类别=1 from 采区表');
adoQury.SQL.Add(' union');
adoQury.SQL.Add(' select 工种ID,工种名,类别=2 from 工种表');
adoQury.SQL.Add(' union');
adoQury.SQL.Add(' select 职务ID,职务名,类别=3 from 职务表');
// adoQury.SQL.Add(' union');
// adoQury.SQL.Add(' select 主要工作地ID,主要工作地点,类别=4 from 主要工作地点表');
adoQury.SQL.Add(' order by 类别,iID');
adoQury.ExecSQL;
adoQury.SQL.Clear;
adoQury.SQL.Add('CREATE Procedure wpgOnWork');
adoQury.SQL.Add(' @tCard int,@hms1 varchar(20),@hms2 varchar(20)');
adoQury.SQL.Add('AS');
adoQury.SQL.Add('Declare @iT1 int,@iT2 int,@iT3 int,@tT4 DateTime');
adoQury.SQL.Add('Declare @DownUP_Old tinyint');
adoQury.SQL.Add('Declare @rtnI1 int');
adoQury.SQL.Add('Declare @rtnT1 DateTime,@rtnT2 DateTime');
adoQury.SQL.Add('Declare @rtnFlag int'); // /*0不确定的状态,128确定开始时间,64确定结束时间*/
adoQury.SQL.Add('set @DownUP_Old=0');
adoQury.SQL.Add('set @rtnFlag=0'); // /*为0说明没有找到记录
adoQury.SQL.Add('Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,下井Time,下上井标识,接收时间 from 考勤表 ');
adoQury.SQL.Add(' where 卡ID=@tCard and(接收时间 between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by 接收时间');
adoQury.SQL.Add('Open wpg');
adoQury.SQL.Add('fetch next from wpg into @iT1,@iT2,@iT3,@tT4');
adoQury.SQL.Add('if @@Fetch_Status=0 ');
adoQury.SQL.Add('begin');
adoQury.SQL.Add(' set @DownUP_Old=@iT3');
adoQury.SQL.Add(' set @rtnI1=@iT2');
adoQury.SQL.Add(' set @rtnT1=@tT4');
adoQury.SQL.Add(' set @rtnT2=@tT4');
adoQury.SQL.Add(' fetch next from wpg into @iT1,@iT2,@iT3,@tT4');
adoQury.SQL.Add(' while @@Fetch_Status=0');
adoQury.SQL.Add(' begin');
adoQury.SQL.Add(' if @iT3=1');
adoQury.SQL.Add(' begin');
adoQury.SQL.Add(' set @DownUP_Old=1');
adoQury.SQL.Add(' set @rtnI1=@iT2');
adoQury.SQL.Add(' set @rtnT1=@tT4');
adoQury.SQL.Add(' set @rtnFlag=0 ');
adoQury.SQL.Add(' end else if @iT3=3 begin');
adoQury.SQL.Add(' if @DownUP_Old=1 begin');
adoQury.SQL.Add(' set @rtnFlag=@rtnFlag | 128 ');// /*确定找到了开始时间*/
adoQury.SQL.Add(' end ');
adoQury.SQL.Add(' end else if @iT3=4 begin');
adoQury.SQL.Add(' set @rtnT2=@tT4');
adoQury.SQL.Add(' if (@DownUP_Old=1)or(@DownUP_Old=3) begin');
adoQury.SQL.Add(' set @rtnFlag=@rtnFlag | 64 ');// /*确定找到了结束时间*/
adoQury.SQL.Add(' end');
adoQury.SQL.Add(' break');
adoQury.SQL.Add(' end');
adoQury.SQL.Add(' fetch next from wpg into @iT1,@iT2,@iT3,@tT4');
adoQury.SQL.Add(' end');
adoQury.SQL.Add('end');
adoQury.SQL.Add('Close wpg');
adoQury.SQL.Add('Deallocate wpg');
adoQury.SQL.Add('select @rtnI1 as iTime,@rtnT1 as tTim1,@rtnT2 as tTim2, @rtnFlag as 标识');
adoQury.ExecSQL;
adoQury.SQL.Clear;
adoQury.SQL.Add('CREATE Procedure wpgDownUP');
adoQury.SQL.Add(' @tCard int,@hms1 DateTime,@hms2 DateTime');
adoQury.SQL.Add('AS');
adoQury.SQL.Add(' select 卡ID,下井Time,上井Time,下上井标识,接收时间 from 考勤表 ');
adoQury.SQL.Add(' where 卡ID=@tCard and(接收时间 between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by 接收时间');
adoQury.ExecSQL;
//从历史卡表中统计一个员工在一段时间内(结合参考时间)最合适一次下井
adoQury.SQL.Clear;
adoQury.SQL.Add('CREATE Procedure wpgOnDuty ');
adoQury.SQL.Add(' @tCard int,@hms1 DateTime,@hms2 DateTime,@CZs DateTime, @iFlag int ');
adoQury.SQL.Add('AS ');
adoQury.SQL.Add('Declare @iRows int ');// /*记录行数*/
adoQury.SQL.Add('Declare @iT1 int,@iT2 int,@tT3 DateTime ');
adoQury.SQL.Add('Declare @DownUP_Old tinyint ');
adoQury.SQL.Add('Declare @rtnT1 DateTime,@rtnT2 DateTime, @rtnT1_ DateTime,@rtnT2_ DateTime ');
adoQury.SQL.Add('Declare @rtnFlag int, @rtnFlag_ int ');// /*0不确定的状态,128确定开始时间,64确定结束时间*/
adoQury.SQL.Add('Declare @iMonth tinyint ');
adoQury.SQL.Add('Declare @iDifMin int,@iDifMin_ int ');
adoQury.SQL.Add('Declare @oldT DateTime ');
adoQury.SQL.Add('set @iMonth=DATEPART(month, @hms1) ');// /*确定查访哪月的数据*/
adoQury.SQL.Add('if Cast(DATEPART(day, @hms1) AS tinyint)<>1 begin ');
adoQury.SQL.Add(' set @iFlag=0 ');// /*当开始日期不是1号时,强制仅查当前表*/
adoQury.SQL.Add('end ');
adoQury.SQL.Add('set @oldT=dbo.preTime(@hms1) ');
adoQury.SQL.Add('if @iMonth=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表01 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add('end else if @iMonth=2 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表01 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表02 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表02 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=3 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表02 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表03 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表03 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=4 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表03 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表04 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表04 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=5 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表04 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表05 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表05 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=6 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表05 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表06 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表06 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=7 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表06 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表07 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表07 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=8 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表07 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表08 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表08 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=9 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表08 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表09 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表09 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=10 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表09 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表10 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表10 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=11 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表10 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表11 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表11 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end else if @iMonth=12 begin ');
adoQury.SQL.Add(' if @iFlag=1 begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表11 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @oldT and @hms2) ');
adoQury.SQL.Add(' union ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表12 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end else begin ');
adoQury.SQL.Add(' Declare wpg Cursor for ');
adoQury.SQL.Add(' select 卡ID,iDU,tT from _历史卡数据表12 where 卡ID=@tCard and(iDU=1 or iDU=4) and(tT between @hms1 and @hms2) ');
adoQury.SQL.Add(' order by tT ');
adoQury.SQL.Add(' end ');
adoQury.SQL.Add('end ');
adoQury.SQL.Add('set @DownUP_Old=0 ');
adoQury.SQL.Add('set @rtnFlag_=0 ');// /*为0说明没有找到记录*/
adoQury.SQL.Add('set @rtnT1_=''1981-10-03'' ');
adoQury.SQL.Add('set @rtnT2_=''1981-10-03'' ');
adoQury.SQL.Add('set @rtnFlag=0 ');// /*为0说明没有找到记录*/
adoQury.SQL.Add('set @rtnT1=''1981-10-03'' ');
adoQury.SQL.Add('set @rtnT2=''1981-10-03'' ');
adoQury.SQL.Add('set @iDifMin =2880 ');// /*初始化为相差两天,实际相差小于4小时(240)才有效*/
adoQury.SQL.Add('set @iDifMin_=2880 ');
adoQury.SQL.Add('Open wpg ');
adoQury.SQL.Add('fetch next from wpg into @iT1,@iT2,@tT3 ');
adoQury.SQL.Add(' set @iRows=0 ');
adoQury.SQL.Add(' while @@Fetch_Status=0 ');
adoQury.SQL.Add(' begin ');
adoQury.SQL.Add(' set @iRows=@iRows+1 ');
adoQury.SQL.Add(' if @iT2=1 ');
adoQury.SQL.Add(' begin ');
adoQury.SQL.Add(' set @DownUP_Old=1 ');
adoQury.SQL.Add(' set @rtnT1=@tT3 ');
adoQury.SQL.Add(' set @rtnFlag=0 ');
adoQury.SQL.Add(' end else if @iT2=4 begin ');
adoQury.SQL.Add(' if @iRows>1 begin ');// /*防止因宽时间段差异直接查出上次的出井*/
adoQury.SQL.Add(' set @rtnT2=@tT3 ');
adoQury.SQL.Add(' if (@DownUP_Old=1) begin ');
adoQury.SQL.Add(' set @rtnFlag=@rtnFlag | 192 ');//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -