帅哥指点!:)

salina 2003-07-16 12:29:29
**************************************************************************
*各位大侠指点,如下程序运行后总是提示continue要跟在LOCATE FOR...之后执行
*我已经把continue 放在后啦!
*请指点!
**************************************************************************
程序如下:
CLOS ALL
OPEN DATA F:\vfp98\pos\pos.DBC
USE prodpurc IN 0
USE parcitem IN 0
USE itemtemp IN 0
USE purctemp IN 0
USE countitem IN 0
PUBLIC logic_item
logic_item=1
recount=0
PUBLIC irecord
irecord=0
i=0
j=0
DELETE FILE f:\vfp98\pos\purcfirs.txt
DELETE FILE F:\VFP98\POS\itemfirs.txt
SELE countitem
IF countitem.itemcount=null
SELE purctemp
COPY TO F:\VFP98\POS\purcfirs.txt FOR audit and enter ;
delimited FIELDS date,itemid,suppname,bizman,saleman,audit
sele prodpurc
APPEND FROM F:\VFP98\POS\purcfirs.txt delimited
SELE itemtemp
COPY TO F:\VFP98\POS\itemfirs.txt FOR audit delimited;
FIELDS date,itemid,prodno,da,form,scalar,dz,count
SELE parcitem
APPEND FROM F:\VFP98\POS\itemfirs.txt DELIMITED
SELE countitem
APPEND FROM prodpurc
UPDATE ON itemcount FROM countitem REPLACE itemcount WITH logic_item
ELSE
SELE purctemp
GO 3
IF AUDIT AND ENTER
SCATTER TO DATE_PURC FIELDS;
date,itemid,suppname,bizman,saleman,audit
findid=date_purc(2)
SELE countitem
LOCATE FOR itemid=findid
IF !FOUND()
SELE prodpurc
APPEND BLANK
GATHER FROM DATE_PURC
SELE itemtemp
LOCATE FOR itemid=findid
IF FOUND()
DO WHILE !EOF()
irecord=irecord+1
dimename='dimedate'
nameid=STR(irecord,1)
arror=dimename+nameid
iname=STR(irecord,1)
iarror=dimename+iname
outrecord='thisrecord'
record_name=outrecord+iname
DIMENSION record_name(8)
DIMENSION arror(1)
STOR RECNO() TO arror
GO arror(1)
SCATTER TO record_name FIELDS date,itemid,;
prodno,da,form,scalar,dz,count
SELE parcitem
APPEND BLANK
GATHER FROM record_name

CONTINUE
IF EOF()
EXIT
ENDIF
ENDDO
ENDIF
SELE countitem
APPEND BLANK
GATHER FROM DATE_PURC(2)
UPDATE ON itemcount FROM countitem;
REPLACE itemcount WITH logic_item
ELSE
=MESSAGEBOX('单据已入库!',0+48,'入库信息')
ENDIF
ELSE
=MESSAGEBOX('采购订单没审核或采购入库单没标入库标记!',0+48,'入库信息')
ENDIF
ENDIF

OPEN DATA F:\vfp98\pos\pos.DBC

...全文
55 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
流星尔 2003-07-16
  • 打赏
  • 举报
回复
语句这样更简练了。
流星尔 2003-07-16
  • 打赏
  • 举报
回复
改成这样
SELE itemtemp
scan FOR itemid=findid
irecord=irecord+1
dimename='dimedate'
nameid=STR(irecord,1)
arror=dimename+nameid
iname=STR(irecord,1)
iarror=dimename+iname
outrecord='thisrecord'
record_name=outrecord+iname
DIMENSION record_name(8)
DIMENSION arror(1)
sTOR RECNO() TO arror
GO arror(1)
SCATTER TO record_name FIELDS date,itemid,;
prodno,da,form,scalar,dz,count
SELE parcitem
APPEND BLANK
GATHER FROM record_name

endscan


流星尔 2003-07-16
  • 打赏
  • 举报
回复
加星分析的正确,
SELE itemtemp
LOCATE FOR itemid=findid
IF FOUND()
DO WHILE !EOF()
irecord=irecord+1
dimename='dimedate'
nameid=STR(irecord,1)
arror=dimename+nameid
iname=STR(irecord,1)
iarror=dimename+iname
outrecord='thisrecord'
record_name=outrecord+iname
DIMENSION record_name(8)
DIMENSION arror(1)
STOR RECNO() TO arror
GO arror(1)
SCATTER TO record_name FIELDS date,itemid,;
prodno,da,form,scalar,dz,count
SELE parcitem
APPEND BLANK
GATHER FROM record_name

CONTINUE
IF EOF()
EXIT
ENDIF
ENDDO
ENDIF

jiaxingxing 2003-07-16
  • 打赏
  • 举报
回复
continue的使用必须跟在LOCATE FOR...之后执行!
程序我不知道是否是你写的。可能存在错误

1、UPDATE ON itemcount FROM countitem REPLACE itemcount WITH logic_item
&&不明其意思。updata-sql的语法问题
UPDATE [DatabaseName1!]TableName1
SET Column_Name1 = eExpression1
[, Column_Name2 = eExpression2 ...]
WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]
2、continue问题
CONTINUE 在用 LOCATE 查找到记录后使用,继续执行 LOCATE 操作。CONTINUE 移动记录指针到下一条逻辑表达式为“真”(.T.) 的记录,该逻辑表达式是在上一个 LOCATE 中指定的。

在到达文件尾或用 LOCATE 指定的作用范围结束之前,可重复使用 CONTINUE。
(这是你程序问题中的出错点。因为你的程序中使用了循环语句,
IF FOUND()

DO WHILE !EOF()
……
continue
enddo
……
endi
你的判断条件“!eof()”将使你的记录指针有可能到记录尾部,从而使你的continue失效


若 CONTINUE 查找到一个记录,则 RECNO( ) 返回该记录的记录号,FOUND( ) 返回“真”(.T.),EOF( ) 返回“假”(.F.)。
如果 CONTINUE 没有找到记录,则 RECNO( ) 返回表的记录个数加一,FOUND( ) 则返回“假”(.F.)
,而 EOF( ) 则返回“真”(.T.)。
3、可能存在冗余语句
IF EOF()
EXIT
ENDIF
&&你的循环判断条件!eof()的使用将上述语句变得好像无意义
**************
程序未能仔细看,是否存在其他问题我未看。






2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧