标注字段名问题
吹水佬版主:在“动态字段排序”帖的“获取最大、次最大”代码中,解决了运行速度问题,谢谢!
但标注时字段名时遇到了小问题:
代码条件中,是在遇上第1个字段符合标注条件后,就退出该轮字段的循环,进入下一个100行。
在下表中两个字段都符合条件,却标的是最后一个字段名:
ys.rar
(991 Bytes)
程序代码:
USE bb IN 0 USE pmax IN 0 SELECT pmax BLANK FIELDS mmax ALL SELECT bb COPY TO ARRAY a100 NEXT 100 && 第1个100行 pmax(@a100) SELECT bb SKIP SCAN REST ** 下一个100行 SCATTER TO a1 && 取bb一行存入a1 ADEL(a100,1) && 删除a100第1行 ACOPY(a1, a100, 1, -1, AELEMENT(a100,100,1)) && 将a1写入a100最后一行 pmax(@a100) ENDSCAN SELECT * FROM pmax RETU FUNCTION k2k3(k2,k3,n1) && 最大值、最次大值 IF n1 > k2 k2 = n1 ELSE IF n1 > k3 k3 = n1 ENDIF ENDIF ENDFUN FUNCTION pmax(a100) FOR nCol=2 TO ALEN(a100,2) n1 = 0 k2 = 0 k3 = 0 krow = 0 &&非空行数 FOR nRow=1 TO ALEN(a100,1) IF EMPTY(a100[nRow,nCol]) n1 = n1 + 1 ELSE k2k3(@k2,@k3,@n1) n1 = 0 krow = krow + 1 ENDIF ENDFOR k1 = n1 &&列最后行的值 k2k3(@k2,@k3,@n1) IF k1==k2 AND k1>3 AND krow>20 AND k1<7 &&求第2大值,与最大值比较 IF k2-k3=1 &&在pmax对应行标注(条件有修改) SELECT pmax GO a100[100,1] REPLACE mmax WITH "MMAX" REPLACE maxm WITH FIELD(nCol,"bb") &&标注此列字段名 EXIT ENDIF ENDIF ENDFOR ENDFUNC
请指教,谢谢!
[此贴子已经被作者于2021-9-20 14:31编辑过]