2,726
社区成员
发帖
与我相关
我的任务
分享
Set Talk Off
Set Deleted On
*-- 创建测试数据
Create Cursor emp (no I, name V(10))
Text to m.cc Noshow textmerge pretext 1+2+4
刘一
陈二
张三
李四
王五
赵六
孙七
周八
吴九
郑十
何十一
祝十二
黄十三
EndText
For ii = 1 to ALines(aTemp, cc, 1+4)
Insert into emp (no, name) Values (ii, aTemp[ii])
EndFor
*-- 定义需求值
dBeg = {^2017.09.01} && 排休起止日期
dEnd = {^2017.09.30}
nEPD = 2 && 每天几人轮休
*-- 创建表, sch 是计划结果表, temp 用来排休
cc1 = "name V(10)"
cc2 = "name V(10)"
For ii = 0 to dEnd - dBeg
cc1 = cc1 + Textmerge(",_<<Dtos(dBeg+ii)>> V(10)")
If Dow(dBeg + ii, 2) != 1 && 是周一就不包含
cc2 = cc2 + Textmerge(",_<<Dtos(dBeg+ii)>> V(10)")
EndIf
EndFor
Create Cursor sch (&cc1) && 结果表, 包含1-30号的所有日期字段
Create Cursor temp (&cc2) && 临时表, 排除了周一的日期字段
*-- 填临时轮休表
Select temp
Append From Dbf('emp')
nn = 0
For ii = 2 to Fcount()
For jj = 1 to nEPD
If nn >= Reccount('emp')
nn = 1
Else
nn = nn + 1
EndIf
Goto nn in emp
Goto emp.no
Replace next 1 (Field(ii)) with '休'
EndFor
EndFor
*-- 填完, 添加到结果表
Select sch
Append From Dbf('temp')
Use in Select('temp')
Use in Select('emp')
Browse && 看结果