L
LittleSong
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,我写了一个考勤的程序。要求自动处理三班倒,二班倒的问题。
我写了一个存储过程,处理的结果总是有问题,我实在找不出问题处在那儿。
请大虾帮忙看一下。谢谢。
职工排班表结构:
编号 char(8)
班次名称 varchar(20)
日期 datetime //班次变更日期
原班次名称 varchar(20)
班次表结构:
班次名称 varchar(20)
上班时间 datetime
下班时间 datetime
聚组 integer //确定同一组班次
次序 integer
周期 integer
CREATE PROCEDURE sp_AutoChangeRuns
@CurrentDate DateTime
AS
Declare @BarCode char(8)
Declare @TheDate DateTime
Declare @LastRuns VarChar(20)
Declare @Runs VarChar(20)
Declare @JZ integer
Declare @NextOne integer
DeClare @Cycle integer
Declare RunsCursor cursor for Select 编号,班次名称,班次起始日期,原班次名称 from 职工排班表 where 班次名称 in (Select 班次名称 from 班次表 where 聚组 <> 0) for Update
open RunsCursor
Fetch RunsCursor into @BarCode,@Runs,@TheDate,@LastRuns
while @@Fetch_Status = 0 begin
Select @JZ=聚组,@NextOne=次序,@Cycle=周期 from 班次表 where 班次名称=@Runs
if DateDiff(DD,@TheDate,@CurrentDate)>=@Cycle begin
Select @LastRuns = @Runs
Select @Runs=班次名称 from 班次表 where 聚组=@JZ and 次序=@NextOne+1
if IsNull(@Runs,'Why')='why'begin
Select @Runs=班次名称 from 班次表 where 聚组=@JZ and 次序=1
end
Update 职工排班表 set 班次名称=@Runs,班次起始日期=DateAdd(DD,@Cycle,@TheDate),原班次名称=@LastRuns where Current of RunsCursor
end
Fetch Next from RunsCursor into @BarCode,@Runs,@TheDate,@LastRuns
end
Close RunsCursor
Deallocate RunsCursor
我写了一个存储过程,处理的结果总是有问题,我实在找不出问题处在那儿。
请大虾帮忙看一下。谢谢。
职工排班表结构:
编号 char(8)
班次名称 varchar(20)
日期 datetime //班次变更日期
原班次名称 varchar(20)
班次表结构:
班次名称 varchar(20)
上班时间 datetime
下班时间 datetime
聚组 integer //确定同一组班次
次序 integer
周期 integer
CREATE PROCEDURE sp_AutoChangeRuns
@CurrentDate DateTime
AS
Declare @BarCode char(8)
Declare @TheDate DateTime
Declare @LastRuns VarChar(20)
Declare @Runs VarChar(20)
Declare @JZ integer
Declare @NextOne integer
DeClare @Cycle integer
Declare RunsCursor cursor for Select 编号,班次名称,班次起始日期,原班次名称 from 职工排班表 where 班次名称 in (Select 班次名称 from 班次表 where 聚组 <> 0) for Update
open RunsCursor
Fetch RunsCursor into @BarCode,@Runs,@TheDate,@LastRuns
while @@Fetch_Status = 0 begin
Select @JZ=聚组,@NextOne=次序,@Cycle=周期 from 班次表 where 班次名称=@Runs
if DateDiff(DD,@TheDate,@CurrentDate)>=@Cycle begin
Select @LastRuns = @Runs
Select @Runs=班次名称 from 班次表 where 聚组=@JZ and 次序=@NextOne+1
if IsNull(@Runs,'Why')='why'begin
Select @Runs=班次名称 from 班次表 where 聚组=@JZ and 次序=1
end
Update 职工排班表 set 班次名称=@Runs,班次起始日期=DateAdd(DD,@Cycle,@TheDate),原班次名称=@LastRuns where Current of RunsCursor
end
Fetch Next from RunsCursor into @BarCode,@Runs,@TheDate,@LastRuns
end
Close RunsCursor
Deallocate RunsCursor