| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3824 人关注过本帖
标题:求助:多条件记录替换
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
以下是引用chychychy在2017-8-1 09:50:56的发言:


不是的,除了8号记录找不到对等934.5分的,其他都有同等分数的需要调整

看似是要在所有记录里找?
那么原来 fqbz==a 的记录有可能又会变为 fqbz<>a 的了?

[此贴子已经被作者于2017-8-1 10:55编辑过]

2017-08-01 10:53
chychychy
Rank: 2
等 级:论坛游民
帖 子:302
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 10楼 吹水佬
2号 3号记录就是1区的呀
2017-08-01 11:02
chychychy
Rank: 2
等 级:论坛游民
帖 子:302
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 10楼 吹水佬
我想这样,从top开始遍历记录,若a<>0 AND fqbz<>a,赋值到数组,那么统计一下分数有无符合条件(COUNT FOR fqbz=arr(4) AND zcj=arr(1) TO bf1 )若BF1的值大于等于1,说明有符合条件的,完成两个替换(REPLACE fqbz WITH arr(3) FOR fqbz=arr(4) AND zcj=arr(1) AND a=0
        REPLACE fqbz WITH arr(4) FOR xjh=arr(1));若bf1值为0,说明没有符合条件的,继续循环,直到所有记录遍历完成。但我不会循环
比如下面
go top
IF a<>0 AND fqbz<>a
    DIMENSION arr(4)
    SCATTER FIELDS xjh,zcj,fqbz,a TO arr
    COUNT FOR fqbz=arr(4) AND zcj=arr(1) TO bf1
        IF bf1>=1
            loca for  fqbz=arr(4) and zcj=arr(2) and a=0
            REPLACE fqbz WITH arr(3) FOR fqbz=arr(4) AND zcj=arr(1) AND a=0
            REPLACE fqbz WITH arr(4) FOR xjh=arr(1)
        ENDIF
??
ENDIF
2017-08-01 11:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
SELECT * FROM "tb - 副本.dbf" INTO CURSOR tmp READWRITE
SELECT tmp
GO TOP
DO WHILE !EOF()
    IF (a != 0) AND (a != fqbz)
        nRecno = RECNO()
        SCATTER TO arr
        LOCATE FOR fqbz==arr[4] AND zcj==arr[2] AND a==0
        IF FOUND()
            REPLACE fqbz WITH arr[3]
            GO nRecno
            REPLACE fqbz WITH arr[4]
        ELSE
            GO nRecno
        ENDIF
    ENDIF
    SKIP
ENDDO
GO TOP
BROWSE FOR (a != 0) AND (a != fqbz)
2017-08-01 11:29
chychychy
Rank: 2
等 级:论坛游民
帖 子:302
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 14楼 吹水佬
我试了,显示了一条不符合条件未替换的,但是符合条件怎么没有完成替换呢

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



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


[此贴子已经被作者于2017-8-1 11:48编辑过]

2017-08-01 11:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
回复 15楼 chychychy
tb - 副本.dbf表的数据没修改
结果在tmp表里
2017-08-01 14:03
chychychy
Rank: 2
等 级:论坛游民
帖 子:302
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 14楼 吹水佬
刚才测试不对,重新测试发现了一个问题,9号,13好记录都要调整且都是934分,9号需要从3调整到1,13号需要从2调整到3,结果9号把符合条件的11号记录从1调整3,13号记录又把调整过1次的11号记录从3调整到了2,这样11号记录被调整了两次,如何避免这种情况。
2017-08-01 14:08
chychychy
Rank: 2
等 级:论坛游民
帖 子:302
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 15楼 chychychy
是的,我刚才看错了,我正在学习某条记录可能被调整两次的问题,需要加一列,调整好标注,再调整时标注了的不再动了才可以。
2017-08-01 14:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
看了下 zcj == 934.0 的记录
调过程是这样:
调整前
xjh ... zcj .... fqbz .. a
0009 .. 934.0 .. 3 ..... 1
0010 .. 934.0 .. 2 ..... 0
0011 .. 934.0 .. 1 ..... 0
0012 .. 934.0 .. 2 ..... 0
0013 .. 934.0 .. 2 ..... 3

调整0009、0011号
xjh ... zcj .... fqbz .. a
0009 .. 934.0 .. 1 ..... 1
0010 .. 934.0 .. 2 ..... 0
0011 .. 934.0 .. 3 ..... 0
0012 .. 934.0 .. 2 ..... 0
0013 .. 934.0 .. 2 ..... 3

调整0011、0013号
xjh ... zcj .... fqbz .. a
0009 .. 934.0 .. 1 ..... 1
0010 .. 934.0 .. 2 ..... 0
0011 .. 934.0 .. 2 ..... 0
0012 .. 934.0 .. 2 ..... 0
0013 .. 934.0 .. 3 ..... 3

如果0011不能重复调整,之前调整时做个标记,查找时加上标记条件,则0011号就不能再调整。




[此贴子已经被作者于2017-8-1 14:34编辑过]

2017-08-01 14:31
chychychy
Rank: 2
等 级:论坛游民
帖 子:302
专家分:98
注 册:2015-4-18
收藏
得分:0 
回复 19楼 吹水佬
然,你太牛了,我一直对循环理解不透,给你学了不少东西。谢谢!
2017-08-01 14:44
快速回复:求助:多条件记录替换
数据加载中...
 
   



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

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