标题:请老师们赐教
只看楼主
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
结帖率:100%
已结贴  问题点数:80 回复次数:10 
请老师们赐教
各位老师们好!
我试着写下面的句子。结果是“有不能识别的命令和短语”。
请老师帮助写出:表gsb1中不同字段的值加减计算后,
结果放在表gsb2对应字段并更新(如同后面带*的句子)。
非常感谢!

附2个表

CLOSE DATABASES

USE gsb1 ALIAS b1 IN 0
USE gsb2
REPLACE ALL gsb2.n1 WITH b1 ABS(z43+z44+z45) IN gsb2  &将表gsb1中的z43,z44,z45相加,并将结果放到表gsb2的n1里。


*REPLACE ALL n1 WITH ABS(z43+z44+z45)
*REPLACE ALL n2 WITH ABS(z43+z44+z46)
*REPLACE ALL n3 WITH ABS(z43+z44+z47)
*REPLACE ALL n4 WITH ABS(z43+z44+z48)
*REPLACE ALL n5 WITH ABS(z43+z44+z49)
*REPLACE ALL n6 WITH ABS(z43+z44+z50)
*REPLACE ALL n7 WITH ABS(z43+z44+z51)
*REPLACE ALL n8 WITH ABS(z43+z44+z52)
*REPLACE ALL n9 WITH ABS(z43+z44+z53)
*REPLACE ALL n10 WITH ABS(z43+z44+z54)

*REPLACE ALL n11 WITH ABS(z43+z45+z46)
*REPLACE ALL n12 WITH ABS(z43+z45+z47)
*REPLACE ALL n13 WITH ABS(z43+z45+z48)
*REPLACE ALL n14 WITH ABS(z43+z45+z49)
*REPLACE ALL n15 WITH ABS(z43+z45+z50)
*REPLACE ALL n16 WITH ABS(z43+z45+z51)
*REPLACE ALL n17 WITH ABS(z43+z45+z52)
*REPLACE ALL n18 WITH ABS(z43+z45+z53)
*REPLACE ALL n19 WITH ABS(z43+z45+z54)

*REPLACE ALL n20 WITH ABS(z43+z46+z47)
*REPLACE ALL n21 WITH ABS(z43+z46+z48)
*REPLACE ALL n22 WITH ABS(z43+z46+z49)
*REPLACE ALL n23 WITH ABS(z43+z46+z50)
*REPLACE ALL n24 WITH ABS(z43+z46+z51)
*REPLACE ALL n25 WITH ABS(z43+z46+z52)
*REPLACE ALL n26 WITH ABS(z43+z46+z53)
*REPLACE ALL n27 WITH ABS(z43+z46+z54)

*REPLACE ALL n28 WITH ABS(z43+z47+z48)
*REPLACE ALL n29 WITH ABS(z43+z47+z49)
*REPLACE ALL n30 WITH ABS(z43+z47+z50)
*REPLACE ALL n31 WITH ABS(z43+z47+z51)
*REPLACE ALL n32 WITH ABS(z43+z47+z52)
*REPLACE ALL n33 WITH ABS(z43+z47+z53)
*REPLACE ALL n34 WITH ABS(z43+z47+z54)

*REPLACE ALL n35 WITH ABS(z43+z48+z49)
*REPLACE ALL n36 WITH ABS(z43+z48+z50)
*REPLACE ALL n37 WITH ABS(z43+z48+z51)
*REPLACE ALL n38 WITH ABS(z43+z48+z52)
*REPLACE ALL n39 WITH ABS(z43+z48+z53)
*REPLACE ALL n40 WITH ABS(z43+z48+z54)

gsb2.zip (29.9 KB)

gsb1.zip (403.24 KB)
搜索更多相关主题的帖子: ABS 老师 WITH 结果 REPLACE 
2020-11-18 10:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
USE gsb1 ALIAS b1 IN 0
USE gsb2 ALIAS b2 IN 0
SELECT b2
REPLACE ALL b2.n1 WITH ABS(b1.z43+b1.z44+b1.z45) IN b2  &&将表gsb1中的z43,z44,z45相加,并将结果放到表gsb2的n1里。
2020-11-18 11:10
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:30 
程序代码:
CLOSE DATABASES 
T1 = SECONDS()
USE gsb2 IN 0
FOR lnj = 5 TO 44
    BLANK FIELDS (FIELD(lnj)) ALL 
ENDFOR
INDEX ON qihao TAG qihao
USE gsb1 IN 0
SELECT gsb1
SET RELATION TO qihao INTO gsb2
SCAN
    ln1 = 0
    FOR lnJ = 44 TO 48
        FOR lnK = lnJ + 1 TO 54
            ln1 = ln1 + 1
            REPLACE ("N" + TRANSFORM(ln1)) WITH ABS(gsb1.z43 + EVALUATE("gsb1.z" + TRANSFORM(lnJ)) + EVALUATE("gsb1.z" + TRANSFORM(lnK))) IN gsb2
        ENDFOR
    ENDFOR
ENDSCAN
SET RELATION TO 
SELECT gsb2
SET ORDER TO 
MESSAGEBOX("共 " + TRANSFORM(SECONDS() - T1) + " 秒")
BROWSE 

坚守VFP最后的阵地
2020-11-18 11:35
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 2楼 吹水佬
吹水佬老师,你好。
对照你写的程序,知道自己的毛病了。
但是,运行你写的程序后,表gsb2,n1字段全部都得44,44是gsb1中第一行z43,z44,z45相加的得数。不知道为什么。
2020-11-18 14:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 4楼 yd1954
不清楚具体怎么算,只是抄这句:
REPLACE ALL gsb2.n1 WITH b1 ABS(z43+z44+z45) IN gsb2
此时b1当前记录ABS(z43+z44+z45)是44,ALL就全是44了
2020-11-18 15:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
3楼的算法应该符合要求
2020-11-18 15:15
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 3楼 sdta
老师,你好!
你写的程序很好。有问题希望帮助解决。
程序中有3处数值限定。但在gsb1中字段z1到z72,都有计算关系,有加有减。按照你的程序,我没办法套用更大范围。
我提供的带*的句子,只是那些计算关系的一部分。
在gsb2中,n1到n100也再只是部分计算结果,n字段可能用到198个。
希望老师在百忙中帮助解决。
2020-11-18 16:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 7楼 yd1954
有什么问题可以直说,大家一起来探讨

坚守VFP最后的阵地
2020-11-18 16:36
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:143
专家分:21
注 册:2016-7-1
得分:0 
回复 8楼 sdta
我希望在2楼句型的基础上,解决只计算一行(都得44)的问题。

例:
USE gsb1 ALIAS b1 IN 0
USE gsb2 ALIAS b2 IN 0
SELECT b2
REPLACE ALL b2.n1 WITH ABS(b1.z43+b1.z44+b1.z45) IN b2
REPLACE ALL b2.n1 WITH ABS(b1.z44+b1.z45+b1.z46) IN b2
REPLACE ALL b2.n1 WITH ABS(b1.z45+b1.z46+b1.z47) IN b2
REPLACE ALL b2.n1 WITH ABS(b1.z43+b1.z44+b1.z45) IN b2
......
REPLACE ALL b2.n1 WITH ABS(b1.z55+b1.z67+b1.z70) IN b2
REPLACE ALL b2.n1 WITH ABS(b1.z23+b1.z37+b1.z42) IN b2
........
REPLACE ALL b2.n1 WITH ABS(b1.z19-b1.z31-b1.z36) IN b2
.......


感谢老师的帮助
2020-11-18 17:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:30 
要善于总结自己以前所提问题中,别人回帖中给予的解决问题的算法,这样才能不断提高自己解决问题的能力。
程序代码:
CLOSE DATABASES 
T1 = SECONDS()
USE gsb2 IN 0
FOR lnj = 5 TO 44
    BLANK FIELDS (FIELD(lnj)) ALL 
ENDFOR
INDEX ON qihao TAG qihao
USE gsb1 IN 0
SELECT gsb1
SET RELATION TO qihao INTO gsb2
SCAN
    REPLACE n1 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z45) IN gsb2
    REPLACE n2 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z46) IN gsb2
    REPLACE n3 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z47) IN gsb2
    REPLACE n4 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z48) IN gsb2
    REPLACE n5 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z49) IN gsb2
    REPLACE n6 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z50) IN gsb2
    REPLACE n7 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z51) IN gsb2
    REPLACE n8 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z52) IN gsb2
    REPLACE n9 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z53) IN gsb2
    REPLACE n10 WITH ABS(gsb1.z43 + gsb1.z44 + gsb1.z54) IN gsb2
ENDSCAN
SET RELATION TO 
SELECT gsb2
SET ORDER TO 
MESSAGEBOX("共运行 " + TRANSFORM(SECONDS() - T1) + " 秒")
BROWSE 

坚守VFP最后的阵地
2020-11-18 17:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503925-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.152103 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved