请问我这样格式对么?

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:23:49
SELECT chiyo

LOCATE FOR chiyo.账号="030250160066" &&查询是否持有这次买入的股票

IF FOUND() AND chiyo.代码=buy(1,5)

replace chiyo.成本 with (chiyo.成本*chiyo.数量+buy(1,2)*buy(1,4))/(chiyo.数量+buy(1,4))

replace chiyo.数量 with chiyo.数量+buy(1,4)

注:chiyo是表,buy()定义好的数组,就看这一段,语法没有错误,电脑什么都没提示就跳过了这一段,
问题解决了,但是很伤心
折腾了一天一夜,第二天发现什么问题都没有了(电脑重启后),难不怪成是电脑做怪?可怜我浪费了整整一天时间!!!

主要是没找到。
有几个问题:
1.记录应先定位,然后用LOCATE WHILE向下找,再用SKIP附助
2.没有ENDIF语句
3.是否可以用

LOCATE while chiyo.账号="030250160066" and 代码=buy(1,5)查找记录?
==============================
SELECT chiyo
go 1
LOCATE while chiyo.账号="030250160066" and chiyo.代码=buy(1,5)
IF FOUND()
replace chiyo.成本 with (chiyo.成本*chiyo.数量+buy(1,2)*buy(1,4))/(chiyo.数量+buy(1,4))
replace chiyo.数量 with chiyo.数量+buy(1,4)
endif
? BUY(1,6)
以上语句应该没问题,请您照上面的代码执行一下,有什么问题告诉我。另外告诉我执行“? BUY(1,6)”后的结果是什么.

没有找到记录,所以不执行IF下的语句。改成:
SELECT chiyo
LOCATE FOR chiyo.账号="030250160066" AND chiyo.代码=buy(1,5)
IF FOUND()
replace chiyo.成本 with (chiyo.成本*chiyo.数量+buy(1,2)*buy(1,4))/(chiyo.数量+buy(1,4))
replace chiyo.数量 with chiyo.数量+buy(1,4)
else
messagebox('没有找到匹配的记录!',0+16)
endif

locate for 和locate while 没有区别,记录指针都指到满足条件的第一条记录。如果需要到下一条满足条件的记录,用continu命令。如果需要对所有满足条件的记录进行替换,则不需要用LOC