选择周期替换问题

pyguang 2017-09-25 11:59:06
我要做一个排班表,预计一天休2个人,星期一一个都不休,应该怎样去跳过星期一自动填那个”休“字
...全文
469 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pyguang 2017-09-27
  • 打赏
  • 举报
回复
版主真高手,谢谢了,感激
都市夜猫 2017-09-26
  • 打赏
  • 举报
回复
说得不够清楚? 算了,直接上代码,看代码总该理解了吧
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		&& 看结果
pyguang 2017-09-26
  • 打赏
  • 举报
回复
等待高手指导
都市夜猫 2017-09-25
  • 打赏
  • 举报
回复
先将原表复制到一个临时表,临时表中不包括不能休的字段,填完后再 append 到原表

vfp 的 append from 命令这一特点非常好。目标表与源表按字段名自动对应,多余的字段自动丢弃,源没有的字段,目标表自动保留 blank 值
pyguang 2017-09-25
  • 打赏
  • 举报
回复
版主主你好,还是没有明白是怎么样自动避开星期一不填

2,726

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧