回 帖 发 新 帖 刷新版面

主题:sywzs 老师请进!!

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次,

回复列表 (共6个回复)

沙发

再加一个判断,没经过测试,不知道是否可行,你试一试吧。

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

板凳

我测试了下,生成如下内容了,没有达到我要的效果,请问老师该如何解决?

 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 楼

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 楼

谢谢老师,代码测试成功了!
但是我还是想问下,以上代码的思路是什么,老师能否给我说下!

5 楼

代码里有个 ELSE 这一行我忘了去掉了,不过不影响程序运行。
从你的数据分析,你是以“标记”为更新“ZZ”的依据,而“ZZ”的值又以“YY”的值值的大小为依据,所以循环语句里只要分析这两个数据的变化就可以了。I 和 J 分别是“~”前后的两个数值,如果 YY 的值是 1,只需要 I 就可以了。

6 楼

我想我有点明白了,但还要仔细想一下,消化下。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册