回复 10楼 sdta
我听了你的建议改的,原始数据必须得排序后才能用,没法直接用,我用笨办法加了两个备注字段(bz1,体现考试日期,bz2,体现考试科目)重新排的序
2023-03-25 17:44
2023-03-25 18:54
程序代码:CLOSE DATABASES
USE 新数据 ALIAS yssj
BLANK FIELDS 组别, 序号, px ALL && 增加一个PX字段,用于最后排序用
INDEX on 考试日期 + 科目 TAG rqkm
USE 总分组 IN 0 ALIAS msap
SELECT msap
SCAN
SELECT yssj
lnrs = 0
SCAN FOR ALLTRIM(考试日期) == ALLTRIM(msap.考试日期) AND ALLTRIM(科目) == ALLTRIM(msap.科目) AND (EMPTY(组别) AND EMPTY(序号))
lnrs = lnrs + 1
REPLACE 组别 WITH msap.kch, 序号 WITH lnrs, px WITH RECNO("msap")
IF MOD(lnrs, msap.kcrs) = 0
EXIT
ENDIF
ENDSCAN
ENDSCAN
SELECT yssj
SET ORDER TO
SELECT * FROM 新数据 ORDER BY px, 考试日期, 科目, 组别, 序号 INTO CURSOR tt
BROWSE &&FOR EMPTY(序号)
2023-03-25 18:56
2023-03-25 19:05
2023-03-25 19:16
2023-03-25 21:13
程序代码:CLOSE DATABASES
USE 新数据 ALIAS yssj
BLANK FIELDS 组别, 序号, px ALL && 增加一个PX字段,用于最后排序用
INDEX on 考试日期 + 科目 TAG rqkm
USE 总分组 IN 0 ALIAS msap
SELECT msap
ln1 = 0
ln2 = 0
SCAN
SELECT yssj
IF msap.kch = ln1
lnrs = ln2
ELSE
lnrs = 0
ENDIF
SCAN FOR ALLTRIM(考试日期) == ALLTRIM(msap.考试日期) AND ALLTRIM(科目) == ALLTRIM(msap.科目) AND (EMPTY(组别) AND EMPTY(序号))
lnrs = lnrs + 1
REPLACE 组别 WITH msap.kch, 序号 WITH lnrs, px WITH RECNO("msap")
IF MOD(lnrs, msap.kcrs) = 0
EXIT
ENDIF
ENDSCAN
ln1 = msap.kch
ln2 = msap.kcrs
ENDSCAN
SELECT yssj
SET ORDER TO
SELECT * FROM 新数据 ORDER BY px, 考试日期, 科目, 组别, 序号 INTO CURSOR tt
BROWSE

2023-03-25 21:27
2023-03-25 21:40
2023-03-25 21:44
,又增长知识了。不过我看上一次更好理解
。当时想这两个变如何关联对应替换,但关联了只会单一替换,不会累加,总之顾此失彼。为了排序增加了两个备注字段。从接触vfp从这个论坛尤其你们几个学到了很多很多!再次感谢!
2023-03-25 22:07