foxpro中如何批量替换,类似word那样的替换

foxpro中如何批量替换,类似word那样的替换,第1张

不着急,很简单,输出下面的一个命令就可以:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10647310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存