注册 登录
编程论坛 VFP论坛

程序内层for循环第二次,在skip命令上报错,提示已到文件尾,此文件有两千多条记录

yuq 发布于 2022-03-09 15:06, 1209 次点击
d表
jbdm    zydm    cnt
1         01        48
2         01        46
3         01       1006
3         02       1418
程序如下
go 1
f=1
n=1
for x=1 TO 86
    select sum(cnt) as y from d where recno()<=f into cursor rs
    g=rs.y
    a1=padl(alltrim(str(x)),3,'0')
    for y=1 TO 30
        a2=padl(alltrim(str(y)),2,'0')
        update e set kch=a1,zwh=a2 where recno()=n
        n=n+1
        skip
        if n>g
            f=f+1
            exit
        endif
    endfor
endfor

[此贴子已经被作者于2022-3-9 15:25编辑过]

9 回复
#2
yuq2022-03-09 15:07
请各位大牛指点一下!
#3
laowan0012022-03-09 15:26
整个程序中没有指定工作区,skip的时候不知道当前是哪个表,也许你在程序最开始打开了表,在一层循环中已经创建了临时表rs,工作区估计已经改变了
在skip之前指定工作区试试

[此贴子已经被作者于2022-3-9 15:28编辑过]

#4
laowan0012022-03-09 15:27
另外,表名和字段名尽量不要使用单个字母命名!!!
#5
吹水佬2022-03-09 15:31
if !eof("表")
  skip in "表"
endif
#6
yuq2022-03-09 15:38
回复 3楼 laowan001
请问应该如何指定工作区呢?
#7
yuq2022-03-09 15:38
回复 5楼 吹水佬
大佬,是这样吗?
go 1
f=1
n=1
for x=1 TO 86
    select sum(cnt) as y from d where recno()<=f into cursor rs
    g=rs.y
    a1=padl(alltrim(str(x)),3,'0')
    for y=1 TO 30
        a2=padl(alltrim(str(y)),2,'0')
        update fpkc set kch=a1,zwh=a2 where recno()=n
        n=n+1
        if !eof("fpkc")
              skip in "fpkc"
        endif
        if n>g
            f=f+1
            exit
        endif
    endfor
endfor
#8
laowan0012022-03-09 15:40
以下是引用yuq在2022-3-9 15:38:05的发言:

请问应该如何指定工作区呢?

select fpkc
skip
#9
yuq2022-03-09 16:03
回复 8楼 laowan001
问题解决,感谢大佬!
#10
mrmack2022-03-09 17:56
感谢分享
1