vfp 分班问题
班级.rar
(599 Bytes)
我想将现要20个班每个班大约70多人,分成每个班50人,将各个班多出来的人分成新班如21,22,23,24,25,26等但要按顺序后面新班也是50个人不用管序号只要在新班级里面生成即可以
[ 本帖最后由 dzy123 于 2013-9-30 16:19 编辑 ]
NOTE VFP9代码,为了不影响原数据的结构,临时表BJ1为班级调整后的数据表 SELECT *,RECNO() BZ FROM 班级 INTO CURSOR BJ1 READWRITE && 用当前表的记录号,做为每个学生的唯一标识,这里有 BZ 表示 UPDATE BJ1 SET BJ1.序号=(SELECT COUNT(*)+1 FROM BJ1 B WHERE BJ1.BZ>B.BZ AND BJ1.班级=B.班级) FROM BJ1 && 类似于班级成绩排名,为每个学生在班级中分配一个序号,为后面分班做准备 UPDATE BJ1 SET 新班级=班级 WHERE 序号<=50 FROM BJ1 && 将班级序号小于50的学生 新班级 字段,用 班级 字段替换 SELECT *,CEILING(RECNO()/50)+22 BJ FROM (SELECT * FROM BJ1 WHERE 序号>50) A INTO CURSOR BJ2 && 将班级序号大于50的学生数据生成新的临时表,重新分班 UPDATE BJ1 SET 新班级=BJ2.BJ FROM BJ2 WHERE BJ1.BZ=BJ2.BZ &&用表BJ2中的 BJ 字段数据替换表BJ1中的 新班级 字段数据 SELECT BJ1 BROWSE效果图