抛砖引玉!
建立员工表 ygb:
字段至少为 员工编号 Yg_id,部门编号 Bm_id,均为数值型。
建立排班表 pbb:
字段至少为 日期 Lb_D,日班(8-20时)Lb_M,夜班(20-8时)Lb_E,其中Lb_D字段为日期型数据,存放所安排的日期,其他字段为数值型数据,存放上班员工的编号。
声明四个变量:
dDATE_S 排班开始的日期
dDATE_E 排班结束的日期
dDATE_T 当前的日期
nBMBH 当前排班的部门编号
排班的代码如下:
SELECT YGB
SET FILTER TO BM_ID = nBMBH
GO TOP
dDATE_T = dDATE_S
DO WHILE .t.
a = YG_ID &&取上日班的员工编号
SKIP
IF EOF()
GO TOP
ENDIF
b = YG_ID &&取上夜班的员工编号
SKIP
IF EOF()
GO TOP
ENDIF
INSERT INTO pbb(LB_D,LB_M,LB_E);
VALUES(dDATE_T,a,b)
dDATE_T = dDATE_T + 1
IF dDATE_T > dDATE_E
EXIT
ENDIF
ENDDO
存在的问题:
当上班的人数为偶数时,上日班的永远被安排日班,上夜班的永远被安排夜班,不能轮换