注册 登录
编程论坛 VFP论坛

请教:vfp REPLACE字段为变量的写法

liuq7 发布于 2021-01-27 18:01, 1628 次点击
我有一个vfp表cs0,字段名为bh1,bh2,bh3,bh4,bh5,bh6,bh7,想实现的目的是:输入起、止编号后,将对应的编号分别写入bh1-bh7,由于起、止编号会变化,故写入的字段个数也会变化。现在的问题是每个i值都在每个与j对应的bh字段中各写了j条记录,但我是希望每个i值只写一次,并分别写入与j对应的bh字段中,如何能实现?麻烦各位大侠给修改指正一下。非常感谢!具体代码如下:
CLEAR
USE cs0
yy=INPUTBOX('输入起编号:')
kk=INPUTBOX('输入止编号:')
bb=VAL(ALLTRIM(kk))-VAL(ALLTRIM(yy))+1
FOR i=VAL(ALLTRIM(yy)) TO VAL(ALLTRIM(kk))
i=i
IF LEN(STR(i))=1
i0='00'+STR(i)
ENDIF
IF LEN(STR(i))=2
i0='0'+STR(i)
ENDIF
IF LEN(STR(i))>2
i0=STR(i)
ENDIF
FOR j=1 TO bb
j=j
bh0=ALLTRIM(ALLTRIM('bh')+ALLTRIM(STR(j)))
APPEND blank
REPLACE &bh0 WITH STR(i0)
endfor
ENDFOR
USE
return
4 回复
#2
吹水佬2021-01-27 21:32
参考
程序代码:
n = 3
CREATE CURSOR cs0 (bh1 C(n),bh2 C(n),bh3 C(n),bh4 C(n),bh5 C(n),bh6 C(n),bh7 C(n))
CLEAR
yy=INT(VAL(INPUTBOX('输入起编号:')))
kk=INT(VAL(INPUTBOX('输入止编号:')))
IF !BETWEEN(yy,1,7) OR !BETWEEN(kk,1,7)
    RETURN
ENDIF
APPEND BLANK
FOR i=yy TO kk
    REPLACE ("bh"+TRANSFORM(i)) WITH PADL(i,n,"0")
ENDFOR
SELECT * FROM cs0
USE
#3
liuq72021-01-28 10:41
回复 2楼 吹水佬
非常感谢!我的想法是:如起编号为4,止编号为8,则bh1写入004、bh2写入005、bh3写入006、bh4写入007、bh5写入008,以此类推,起止编号不一定是1-7之间。代码改为如下后,对应字段写入的都是止编号,应该怎么写才能实现目的呢?再次感谢!
n = 3
CREATE CURSOR cs (bh1 C(n),bh2 C(n),bh3 C(n),bh4 C(n),bh5 C(n),bh6 C(n),bh7 C(n))
CLEAR
yy=INT(VAL(INPUTBOX('输入起编号:')))
kk=INT(VAL(INPUTBOX('输入止编号:')))
bb=kk-yy+1
IF !BETWEEN(bb,1,7)
    RETURN
ENDIF
APPEND BLANK
FOR i=1 TO bb
FOR j=yy TO kk
    REPLACE ("bh"+TRANSFORM(i)) WITH PADL(j,n,"0")
ENDFOR
ENDfor
brow

[此贴子已经被作者于2021-1-28 11:05编辑过]

#4
sdta2021-01-28 11:23
CREATE CURSOR cs (bh1 C(n),bh2 C(n),bh3 C(n),bh4 C(n),bh5 C(n),bh6 C(n),bh7 C(n))
yy=INT(VAL(INPUTBOX('输入起编号:')))
kk=INT(VAL(INPUTBOX('输入止编号:')))
bb = kk - yy + 1
IF !BETWEEN(bb,1,7)
    RETURN
ENDIF
APPEND BLANK
FOR j=yy TO kk
    REPLACE ("bh"+TRANSFORM(j - yy + 1)) WITH PADL(j,n,"0")
ENDFOR
BROWSE


[此贴子已经被作者于2021-1-28 11:27编辑过]

#5
liuq72021-01-28 14:45
回复 4楼 sdta
可以了,非常感谢!
1