主题:sywzs 老师请进!!
绝缘子2009
[专家分:50] 发布于 2009-07-02 21:22:00
GO TOP
I=1
DO WHILE !EOF()
j=i+yy-1
REPLACE zz WITH ALLTRIM(STR(i))+iif(yy>1,"~"+ALLTRIM(STR(j)),"")+SUBSTR(xx,AT("/",xx))
SKIP
i=j+1
ENDDO[/quote]
老师的代码测试成功了,但是和我的最终目的还有些差距,
能不能不逐行更新zz的值,而根据 标记 字段来更新呢(见图)
标记值相同的更新1次,
最后更新于:2009-07-02 21:27:00
回复列表 (共6个回复)
沙发
sywzs [专家分:5650] 发布于 2009-07-03 04:34:00
再加一个判断,没经过测试,不知道是否可行,你试一试吧。
GO TOP
[color=FF0000][b]BJ=0[/b][/color]
I=1
DO WHILE !EOF()
j=i+yy-1
[color=FF0000][b]IF 标记<>BJ[/b][/color]
REPLACE zz WITH ALLTRIM(STR(i))+iif(yy>1,"~"+ALLTRIM(STR(j)),"")+SUBSTR(xx,AT("/",xx))
[color=FF0000][b] ENDIF
BJ=标记[/b][/color]
SKIP
i=j+1
ENDDO
板凳
绝缘子2009 [专家分:50] 发布于 2009-07-08 10:39:00
我测试了下,生成如下内容了,没有达到我要的效果,请问老师该如何解决?
xx yy 标记 zz 正确zz值
1/9 1 1 1/9 1/9
1/9 1 1 1/9 1/9
1/9 1 1 1/9 1/9
1/9 1 1 1/9 1/9
1/9 1 1 1/9 1/9
2/9 2 2 6~7/9 2~3/9
2/9 2 2 2~3/9
2/9 2 2 2~3/9
2/9 2 2 2~3/9
2/9 2 2 2~3/9
3/9 1 3 16/9 4/9
3/9 1 3 4/9
4/9 3 4 18~20/9 5~7/9
4/9 3 4 5~7/9
5/9 1 5 24/9 8/9
6/9 1 6 25/9 9/9
在线等。。。。。
3 楼
sywzs [专家分:5650] 发布于 2009-07-08 12:45:00
GO TOP
STORE 0 TO BJ,I,J
DO WHILE !EOF()
IF BJ<>标记
I=J+1
J=I+VAL(yy)-1
ELSE
ENDIF
REPLACE zz WITH ALLTRIM(STR(I))+IIF(VAL(yy)>1,"~"+ALLTRIM(STR(J)),"")+SUBSTR(xx,AT("/",xx))
BJ=标记
SKIP
ENDDO
4 楼
绝缘子2009 [专家分:50] 发布于 2009-07-08 14:33:00
谢谢老师,代码测试成功了!
但是我还是想问下,以上代码的思路是什么,老师能否给我说下!
5 楼
sywzs [专家分:5650] 发布于 2009-07-08 15:00:00
代码里有个 ELSE 这一行我忘了去掉了,不过不影响程序运行。
从你的数据分析,你是以“标记”为更新“ZZ”的依据,而“ZZ”的值又以“YY”的值值的大小为依据,所以循环语句里只要分析这两个数据的变化就可以了。I 和 J 分别是“~”前后的两个数值,如果 YY 的值是 1,只需要 I 就可以了。
6 楼
绝缘子2009 [专家分:50] 发布于 2009-07-08 16:15:00
我想我有点明白了,但还要仔细想一下,消化下。。。
我来回复