| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2446 人关注过本帖
标题:标注字段名问题
取消只看楼主 加入收藏
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
结帖率:73.97%
收藏
已结贴  问题点数:20 回复次数:12 
标注字段名问题
吹水佬版主:
    在“动态字段排序”帖的“获取最大、次最大”代码中,解决了运行速度问题,谢谢!
但标注时字段名时遇到了小问题:
     代码条件中,是在遇上第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编辑过]

搜索更多相关主题的帖子: 标注 SELECT IF 字段 条件 
2021-09-20 14:21
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
回复 3楼 吹水佬
条件还原:
程序代码:
IF k1==k2 AND k1>0 AND krow>20 AND k1<7     &&求第2大值,与最大值比较
           
            IF INLIST(k2-k3,1,2) &&在pmax对应行标注
           
                SELECT pmax
                GO a100[100,1]
                REPLACE mmax WITH "MMAX"
                REPLACE maxm WITH FIELD(nCol,"bb")
                EXIT 
                              
            ENDIF 
        ENDIF 

图片附件: 游客没有浏览图片的权限,请 登录注册


是我获取字段名的代码有问题?

[此贴子已经被作者于2021-9-20 16:25编辑过]

2021-09-20 16:20
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
回复 5楼 吹水佬
麻烦了!!!
2021-09-20 18:40
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
谢谢!
请教,tt表在哪反映?
2021-09-20 22:06
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
回复 9楼 吹水佬
谢谢!
2021-09-21 02:21
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
从测试和统计结果看:
在IF k1==k2 AND k1>0 AND krow>20 AND k1<7条件下,都是k3<k2,没有k3=k2的情况,
但我把  IF INLIST(k2-k3,1,2)
 改成:IF k2=k3
统计结果一样,这样 IF INLIST(k2-k3,1,2)就成多余的条件,
我的意图是在k3<k2的情况下标注,k3=k2就不标注。

可能是我这次提供的bb无这种情况,我把上次的bb试一下看.


[此贴子已经被作者于2021-9-21 10:49编辑过]

2021-09-21 10:35
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
老师:
bb.rar (21.02 KB)

此表放在IF k1==k2 AND k1>0 AND krow>20 AND k1<7,
在IF INLIST(k2-k3,1,2)之前(标注条件前)
测试结果显示无k3=k2的情况,且出现记录超范围的提示。
不满足:在k3<k2的情况下标注,k3=k2就不标注。

这样 IF INLIST(k2-k3,1,2)就成多余的条件,

第一次代码有k3=k2和k3<k2情况

[此贴子已经被作者于2021-9-21 11:11编辑过]

2021-09-21 11:08
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用吹水佬在2021-9-21 11:38:04的发言:

k2是连续非空最多的,且按每行计算,k3是紧跟着k2,这样一定是 k2-k3==1,所以k3也是多余算的。

程序代码:
FUNCTION k2k3(k2,k3,n1)  && 最大值、最次大值
    IF n1 > k2
        k2 = n1
    ELSE
        IF n1 > k3
            k3 = n1
        ENDIF 
    ENDIF 
ENDFUNC

经测试:上一次的这段代码有k3=k2 和k3<k2两种情况。
只是标注时字段名不是第1个

满足:在k3<k2的情况下标注,k3=k2就不标注是主要条件

[此贴子已经被作者于2021-9-21 12:23编辑过]

2021-09-21 12:11
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
第一次的代码解决了在100行中有一个条件在k3<k2时标注,k3=k2时不标注的问题,只是标注时是最后一个字段名。
如果不管字段名,也算解决了问题.
2021-09-21 12:21
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
收藏
得分:0 
用上面的bb,用下面的pmax
pmax.rar (6.38 KB)

否则显示记录超范围
2021-09-21 12:26
快速回复:标注字段名问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028870 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved