| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4326 人关注过本帖
标题:大小比较问题
只看楼主 加入收藏
fdqzy
Rank: 1
等 级:新手上路
帖 子:368
专家分:0
注 册:2016-8-15
结帖率:73.97%
收藏
已结贴  问题点数:18 回复次数:27 
大小比较问题
对表字段pdzj的上下两数字比较大小,在对应的行填上“大、小、同”,见表:
大小比较.rar (425 Bytes)

谢谢!
搜索更多相关主题的帖子: 字段 大小 对应 比较 数字 
2020-01-01 18:35
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:4 
一,你给的示例当中有错误吧,其中你的比较值为1,而在小的字段中,竟然出现了值相等显示 小字,这个没看懂,我估计是你做数据的时候搞错了。
二,下图是否是你要的结果?
图片附件: 游客没有浏览图片的权限,请 登录注册

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2020-01-01 20:09
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1546
专家分:3003
注 册:2012-2-29
收藏
得分:4 
基本思路:
获取字段值,转为数值型,大于0时,记为x
然后继续获取下一记录的,转为数值型,大于0时,记为y
判断x与y的大小,赋值字段值为“大” 或“小”或“同”,此时x=y
继续获取下一记录的值,转为数值型,直到大于0时,判断大小,如法炮制,直到末记录。
不知我的理解对否?请你判断。
Test.rar (502 Bytes)

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


[此贴子已经被作者于2020-1-1 20:32编辑过]

2020-01-01 20:29
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26906
注 册:2012-2-5
收藏
得分:4 
程序代码:
CLOSE DATABASES 
USE 大小比较
BLANK FIELDS pdzjd, pdzjx, pdzjt ALL 
ok = .F.
SCAN 
    IF ok = .F.
        IF ISDIGIT(Pdzj) = .T.
            cStr = ALLTRIM(Pdzj)
            ok = .T.
        ENDIF
    ELSE
        IF ISDIGIT(Pdzj) = .T.
            DO CASE
                CASE ALLTRIM(Pdzj) == cStr
                    REPLACE Pdzjt WITH "同"
                CASE ALLTRIM(Pdzj) > cStr
                    REPLACE Pdzjd WITH "大"
                CASE ALLTRIM(Pdzj) < cStr
                    REPLACE Pdzjx WITH "小"
            ENDCASE
            cStr = ALLTRIM(Pdzj)
        ENDIF
    ENDIF  
ENDSCAN
BROWSE 

坚守VFP最后的阵地
2020-01-01 20:50
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
第一、我很开心。不管你的思路是否是最佳思路,现在比十几年前我在论坛上看到的那种要代码的现象好很多,最少您是在思考,我欣赏。
第二、就我个人看等您所提出的问题而言,我个人认为,您的思路并非最佳思路。
第三、这个问题REPLACE就可以搞定,我测试了,不用那么复杂,三行代码就可以。当然,如果您用自己的方法可以实现,而且数据量不大的话,用自己的方法记忆 会更加深刻,我并不反对。但如果记录过多,比如我现在写了个软件,几千个表,字段就将近十万个,记录一动就是几百万条,那就要考虑运行速度的问题了,因为那时候,需要你一秒一秒的去优化的你代码。
第四、你再思考一下,如果确实思路上无法再精炼,我给一个我的方法,供您参考。

[此贴子已经被作者于2020-1-1 20:53编辑过]


有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2020-01-01 20:51
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
不好意思,看错题目了,我以为用第一条记录为被比较记录。。。。。所以代码是以第一条记录为被比较记录写的
GO 1
X=pdzj

REPLACE ALL pdzjd  WITH "大" FOR ASC(pdzj)<57 AND  ASC(pdzj)>ASC(x)
REPLACE ALL pdzjx  WITH "小" FOR ASC(pdzj)<57 AND  ASC(pdzj)<ASC(x) AND  ASC(ALLTRIM(pdzj))>0
REPLACE ALL pdzjt  WITH "同" FOR ASC(pdzj)<57 AND  ASC(pdzj)=ASC(x)
BROWSE

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2020-01-01 21:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:4 
表结构优化一下,算法可能更简单有效些
ALINES(a,"d,大,x,小,t,同",",")
DIMENSION a[3,2]
USE 大小比较
BLANK FIELDS pdzjd, pdzjx, pdzjt ALL
GO TOP
LOCATE FOR ISDIGIT(Pdzj)
m = Pdzj
SKIP
COUNT REST FOR fun()
SELECT * FROM 大小比较
RETURN

FUNCTION fun()
    IF ISDIGIT(Pdzj)
        i = IIF(Pdzj>m,1,IIF(Pdzj<m,2,3))
        REPLACE ("pdzj"+a[i,1]) WITH a[i,2]
        m = Pdzj
    ENDIF
ENDFUNC

[此贴子已经被作者于2020-1-1 22:10编辑过]

2020-01-01 22:07
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
厉害了,把所有的版主都 调动起来了,嘿嘿


Use 大小比较
Blank Fields pdzjd, pdzjx, pdzjt All
Go 1
X=Alltrim(pdzjd)
Scan  For  Asc(Alltrim(pdzjd))<57 And Asc(Alltrim(pdzjd))>0
    A=Icase(Asc(Alltrim(pdzjd))>Asc(X),[REPLACE  pdzjd  WITH '大'],Asc(Alltrim(pdzjd))<Asc(X),[REPLACE  pdzjx  WITH '小'],[REPLACE  pdzjt  WITH '同'])
    &A
    X=Alltrim(pdzjd)
Endscan
Browse

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2020-01-01 22:17
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
程序代码:
Use 大小比较
Blank Fields pdzjd, pdzjx, pdzjt All
Go 1
X=Alltrim(pdzjd)
Scan  For  Asc(Alltrim(pdzjd))<57 And Asc(Alltrim(pdzjd))>0
    A=Icase(Asc(Alltrim(pdzjd))>Asc(X),[REPLACE pdzjd WITH '大'],Asc(Alltrim(pdzjd))<Asc(X),[REPLACE pdzjx WITH '小'],[REPLACE pdzjt WITH '同'])
    &A
    X=Alltrim(pdzjd)
Endscan
Browse

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2020-01-01 22:18
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 
我刚知道,还有这个直接弄代码的功能。。。。。。

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2020-01-01 22:18
快速回复:大小比较问题
数据加载中...
 
   



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

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