REPLACE ALL 路由 WITH strtran (路由, "数据中继", "数据")
哦,在这之前要打开数据库,命令是:
USE abc
foxpro的替换命令有两类,一个是replace,以记录为单位替换;另一个更常用的是update,以记录集为单位替换。语法分别如下(语法来自MSDN),鉴于提问者可能是新手,只保留语法中常用参数,且译为中文:一、replace:
REPLACE 字段名1 WITH 表达式1 , 字段名2 WITH 表达式2 ..... [FOR 表达式1]
实例:
CLOSE DATABASES
CREATE TABLE Random(cValue N(3))&&创建表random,表只有一个字段cvalue
FOR nItem = 1 TO 10 &&添加 10 条记录,
APPEND BLANK &&添加空记录
REPLACE cValue WITH 1 + 100 * RAND() &&将插入的空记录的cvalue替换为随机值
ENDFOR
二、update
update是一条sql命令,遵循sql语法
UPDATE 表名 SET 字段名1 = 表达式1 , 字段名2 = 表达式2 ..... WHERE 过滤表达式
以上实例中的repalce用update执行的话为
update random set cvalue=1 + 100 * RAND()
***鉴于效率考虑,应优先考虑使用update语句
方法一:在(总表)零售价修改的地方增加一个判断,调用一个自定义函数。调用的时候把参数spbm和lsj传递过去,就可以在修改(总表)价格的时候修改(价格表)中对应的价格了。
提前把价格建立复合索引:
index on spbm tag ispbm
自定义函数的写法:
Para mSpbm,mlsj
if !Used('价格')
Use 价格 in 0
endif
Sele 价格
Set order to ispbm
if seek(m.mspbm)
replace lsj with m.mlsj
else
wait'这个编码没有在价格表中找到!!!' windows
endif
return
当然,总表和价格表反过来查,做法相同。
方法二:
全部修改完价格以后再替换:
if !Used('价格')
Use 价格 in 0
endif
Sele 价格
Set order to ispbm
if !Used('总表')
Use 总表 in 0
endif
Sele 总表
Scan
Sele 价格
if seek(m.mspbm)
replace lsj with m.mlsj
else
?spbm,'这个编码没有在价格表中找到!!!'
endif
endscan
return
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)