回复 2楼 sdta
指的是001考场、002考场的30人都是这个科目,这个段内的考场不涉及多个科目。
CLOSE DATABASES CREATE CURSOR kckmqd (考点代码 c(4), 考点名称 c(20), 考场号 c(3), 座号区间 c(5), 人数 n(2), 科目 c(8)) INDEX ON 考点代码 + 考点名称 + 考场号 + 科目 TAG kcxx SELECT kddm, kdmc, SUBSTR(ALLTRIM(kch),5,3) kch, zh, km FROM 考场信息表 INTO CURSOR kcxxb SCAN IF SEEK(kcxxb.kddm + kcxxb.kdmc + kcxxb.kch + kcxxb.km, "kckmqd", "kcxx") = .F. INSERT INTO kckmqd (考点代码, 考点名称, 考场号, 科目) VALUES (kcxxb.kddm, kcxxb.kdmc, kcxxb.kch, kcxxb.km) ENDIF REPLACE 座号区间 WITH IIF(EMPTY(座号区间), SPACE(0), LEFT(座号区间, 2) + "-") + PADL(kcxxb.zh, 2, "0"), 人数 WITH 人数 + 1 IN kckmqd ENDSCAN SELECT kckmqd SET ORDER TO &&取消索引后,默认按照考点、考场号、座号区间排序。 *--* 第二阶段:对考场科目清单“考点相同、科目相同、考场连续满场”的继续整理,减少数据行 CREATE CURSOR kckmqdhz (考点代码 c(4), 考点名称 c(20), 考场区间 c(7), 座号区间 c(5), 场内人数 n(2), 科目 c(8)) SELECT kckmqd SCAN IF kckmqdhz.考点代码 == kckmqd.考点代码 AND kckmqd.座号区间 == "01-30" AND kckmqdhz.场内人数 = 30 AND kckmqdhz.科目 == kckmqd.科目 REPLACE kckmqdhz.考场区间 WITH LEFT(kckmqdhz.考场区间 ,3) + "-" +kckmqd.考场号 IN kckmqdhz ELSE INSERT INTO kckmqdhz(考点代码, 考点名称, 考场区间, 座号区间, 场内人数, 科目) VALUES (kckmqd.考点代码, kckmqd.考点名称, kckmqd.考场号, kckmqd.座号区间, kckmqd.人数, kckmqd.科目) ENDIF ENDSCAN SELECT kckmqdhz BROWSE