| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1217 人关注过本帖
标题:好伤脑筋的一道题,请来帮忙!
只看楼主 加入收藏
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:8 
回复 9楼 shyibaoban
主要是这里:
SELECT ry
GO top
rynl=VAL(nl)  && 你这里的rynl 没有参加循环
DO WHILE .t.
IF EOF()
EXIT
ENDIF
IF rynl>=60 AND xb="男" AND xzdm!="d" AND xzdm!="e"
replace xzdm WITH "b",ryxz WITH "老年居民"
ENDIF
IF rynl>=55 AND xb="女" AND xzdm!="d" AND xzdm!="e"
replace xzdm WITH "b",ryxz WITH "老年居民"
ENDIF
IF rynl<18 AND xzdm!="d" AND xzdm!="e" AND xzdm!="f"
replace xzdm WITH "a",ryxz with "儿童及18周岁以下居民"
ENDIF
IF rynl>=18 AND rynl<60 AND xb="男" AND xzdm!="d" AND xzdm!="e" AND xzdm!="f"
replace xzdm WITH "c",ryxz with "其他非从业居民"
ENDIF
IF rynl>=18 AND rynl<55 AND xb="女" AND xzdm!="d" AND xzdm!="e" AND xzdm!="f"
replace xzdm WITH "c",ryxz WITH "其他非从业居民"
ENDIF
skip
ENDDO

比如女55以上为老年居民。但更新完后人员性质和代码没变。


---------------------------------
可改成(不要用do循环,否则当记录超过几十万时,速度很慢的):

SELECT ry
replace xzdm WITH "b",ryxz WITH "老年居民" for  VAL(nl)>=60 AND xb="男" AND xzdm!="d" AND xzdm!="e"
replace xzdm WITH "b",ryxz WITH "老年居民" for VAL(nl)>=55 AND xb="女" AND xzdm!="d" AND xzdm!="e"
replace xzdm WITH "a",ryxz with "儿童及18周岁以下居民"  for VAL(nl)<18 AND xzdm!="d" AND xzdm!="e" AND xzdm!="f"

....


[ 本帖最后由 茵梦湖 于 2010-1-3 18:50 编辑 ]
2010-01-03 18:49
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:0 
以下是引用shyibaoban在2010-1-3 18:46:41的发言:

根据这replace all xzdm with iif(rynl>60 and xb='男' or rynl>55 and xb='女','B',iif(rynl<18,'A','C'))
测试,xzdm全为'c',不知为啥?
改为:

replace all xzdm with iif((val(nl)>60 and xb='男') or (val(nl)>55 and xb='女'),'B',iif(val(nl)<18,'A','C'))
2010-01-03 18:56
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:0 
略为仔细地看了下你的题意, 你将nl字段改为数值型后, 其实是很简单的~~

程序代码:
repl all nl with year(date())-iif(len(alltrim(sfzh))=15,val('19'+substr(sfzh,7,2)),val(substr(sfzh,7,4)));
      ,xzdm with iif((nl>=60 and xb='男') or (nl>=55 and xb='女'),'B',iif(nl<18,'A','C'))

repl xzdm WITH "b",ryxz WITH "老年居民" for ((nl>=60 AND xb="男") .or.(nl>=55 AND xb="女")) AND xzdm!="d" AND xzdm!="e"
repl xzdm WITH "a",ryxz with "儿童及18周岁以下居民" for nl<18 AND xzdm!="d" AND xzdm!="e" AND xzdm!="f"
repl xzdm WITH "c",ryxz WITH "其他非从业居民" for ((betw(nl,18,59) AND xb="男") .or.(betw(nl,18,54) AND xb="女"))  AND xzdm!="d" AND xzdm!="e" AND xzdm!="f"


[ 本帖最后由 茵梦湖 于 2010-1-3 19:31 编辑 ]
2010-01-03 19:24
shyibaoban
Rank: 1
等 级:新手上路
帖 子:125
专家分:2
注 册:2008-12-3
收藏
得分:0 
谢谢Tiger5392和茵梦湖两位老师,在你们的指点下,榆木脑袋开点壳了。问题解决了。再次感谢两位老师,祝老师节日快乐,新的一年工作顺利!
2010-01-03 20:24
快速回复:好伤脑筋的一道题,请来帮忙!
数据加载中...
 
   



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

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