程序代码:
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